Базовый взрыв foreach

У меня есть следующий код, из которого я хочу отображать элементы массива, разделенные запятыми. Код выводит список disered, но без запятых. Что мне не хватает?

<?php 
    $array    = get_field('casts');
    $elements = $array;

    foreach($array as $key => $value) {
        echo implode(', ', $value)};
?>

EDIT 1: где $elements — вложенные массивы.

EDIT 2: Рабочий фрагмент:

<?php 
    $array = get_field('casts');
    $new_array = array();
    foreach($array as $sub_array) {
        foreach($sub_array as $value) { 
            array_push($new_array, $value);
        }
    }
    echo implode(", ", $new_array);
?>

person elbatron    schedule 15.04.2012    source источник
comment
Если $value содержит только 1 элемент, implode() не будет иметь никакого эффекта.   -  person Kemal Fadillah    schedule 15.04.2012
comment
Можете ли вы опубликовать var_dump массива $?   -  person Salman A    schedule 15.04.2012


Ответы (1)


Почему вы назначаете $elements = $array; и никогда не используете $elements?

Также вам не нужно зацикливаться (foreach), чтобы взорвать массив.

Попробуй это:

<?php
$array = get_field('casts');
$new_array = array();
foreach($array as $sub_array) {
    foreach($sub_array as $value) {
        // this array_push() function adds $value to the end of $new_array.
        array_push($new_array, $value);
    }
}
echo implode(", ", $new_array);
?>

Вот документация по implode()

Вы можете поиграть и протестировать приведенный выше код здесь.

Также в следующий раз добавьте тег php, иначе наши коды не получат цветовой синтаксис.

person hobbes3    schedule 15.04.2012
comment
Извините, я забыл упомянуть, что $elements являются вложенными массивами. Ваш ответ дает мне массив, массив, массив... - person elbatron; 15.04.2012
comment
@elbatron Не могли бы вы сделать print_r($array); и сообщить мне результат вашего (отредактированного) вопроса? Знание фактического значения $array поможет мне лучше понять вашу проблему. Если это слишком долго, то просто дайте мне первые несколько элементов. Спасибо. - person hobbes3; 15.04.2012
comment
Массив ( [0] =› Массив ( [актёр] =› Натали Портман ) [1] =› Массив ( [актёр] =› Венсан Кассель ) [2] =› Массив ( [актёр] =› Мила Кунис )) - person elbatron; 15.04.2012
comment
Ну, я не уверен, почему у вас есть массив, содержащий много одноэлементных массивов. Но я думаю, что мой отредактированный ответ работает для вас. В будущем, почему бы просто не сделать что-то простое, например $actors = new Array("Natalie Portman", "Vincent Cassel", "Mila Kunis")? - person hobbes3; 15.04.2012
comment
Я предполагаю, что у него есть другая информация, кроме имени. То есть массив каждого актера содержит такую ​​информацию, как возраст, ДоБ и т. д. - person Jack; 15.04.2012
comment
Так он хочет отдельный список для актеров, возраста, года рождения? Мое текущее решение объединит все подмассивы в одномерный массив, а затем взорвет его. - person hobbes3; 15.04.2012
comment
Лол, извини, я забыл ; в строке для array_push(...) - person hobbes3; 15.04.2012
comment
@elbatron Удалите ключевое слово new. Это должно решить проблему. - person Kemal Fadillah; 15.04.2012
comment
@ Джек, у меня нет другой информации, только имя. Я работаю с модулем цикла и не могу изменить способ его работы. - person elbatron; 15.04.2012
comment
@KemalFadillah Извините, я использовал синтаксис JavaScript. Я только что проверил код на интерпретаторе PHP, так что теперь все должно быть в порядке. - person hobbes3; 15.04.2012