Я хочу получить значения по ключу из моего массива:

array(2) {
  [0]=>
  array(14) {
    ["id"]=>
    string(2) "64"
    ["name"]=>
    string(9) "Freddy"
    ["firstname"]=>
    string(7) "Lang"
  }
  [1]=>
  array(14) {
    ["id"]=>
    string(2) "77"
    ["name"]=>
    string(6) "Samual"
    ["firstname"]=>
    string(5) "Johnson"

  }
}

$id = array_column($array, 'id');
$firstname = array_column($array, 'firstname');
$name = array_column($array, 'name');
echo "<select>";
  echo implode('<option value ="'.$id.'"'>'.$firstname.' '.$name.'</option>); 
echo "</select>";

Но в результате я получаю пустую страницу.

0
peace_love 21 Мар 2017 в 14:12

2 ответа

Лучший ответ

Вы можете использовать array_map для преобразования входного массива в html-код для <option> затем implode всего, используя только один оператор:

echo "<select>" . implode('', array_map(function($row) { 
     return '<option value="'.$row['id'].'">'. $row['firstname'] .' '. $row['name'].'</option>';
 }, $array )) . "</select>";
1
Constantin Galbenu 21 Мар 2017 в 11:30

Использование взрыва не является правильным способом в этом контексте:

Используя foreach:

echo '<select>';
foreach ($array as $key => $value) {
    echo '<option value ="'.$value['id'].'">'.$value['firstname'].' '.$value['name'].'</option>';
}
echo '</select>';
2
hassan 21 Мар 2017 в 11:27