2015-11-25 2 views
0

У меня есть массив сеансов PHP, где его можно считать многомерным массивом, в основном я пытаюсь хранить данные внутри своего массива сеансов, и я успешно получаю эту часть задачи. Основная проблема заключается в том, что я не могу их отследить, и я должен использовать var_dump. Когда я пытаюсь распечатать их с помощью эха, я получил уведомление, в котором говорится о преобразовании массива в строку. Пожалуйста, помогите мне оценить, как печатать их со своими конкретными ключами или значениями. Код следующим образом:Многомерный сеанс php array echoing

if (!is_array($_SESSION['products']['names'])){ 

    $_SESSION['products']['names'] = array(); 
    $_SESSION['products']['names']['prices']= array(); 

    }else { 

    $pros = $_SESSION['products']['names']; 

    if (in_array($product->getName(), $pros, true)){ 

    echo 'The product is available in your basket'; 

    } else { 

    array_push($_SESSION['products']['names'],$product->getName()); 
    array_push($_SESSION['products']['names']['prices'], $product->getPrice(Currency::getCurrentCurrency())); 


    foreach ($_SESSION['products'] as $val){ 

     echo $val['names']; 
     echo $val['prices']; 

    } 
    } 

} 

выход, который я получаю следующим образом:

Примечание: Undefined индекс: имена в

Массив для преобразования строки в

+0

'print_r' печатает переменную совершенен. На какой строке этого кода вы столкнулись с проблемой? –

+0

Линия print_r, потому что она печатает ее с кавычками, где я не хочу, чтобы это было действительно. Поскольку эхо помогает распечатать его более четко и как я хочу напечатать –

+0

'echo' печатает только строки. Массив не является строкой. Вы должны использовать 'foreach' и печатать каждый элемент вашего массива. –

ответ

-1

Там не проблема с код, который у вас есть. Я не вижу, чтобы вы пытались эхо или vardump их напрямую, поэтому, пожалуйста, покажите код, который вы эхом отдаете от него, или вывод сверху, а какая строка дает вам проблему.

+0

вот массив .. 'array_push ($ _ SESSION ['products'] ['names'], $ product- > getName()); '..here есть массив для преобразования строк' echo $ val ['names']; '.. очевидно, что что-то не так с его кодом –

+0

@Pamblam echo $ val ['names'] не было показан исходный код. Код изменился –

+0

Да, он прав, я изменил код, извините за недоразумение –

-1

Если вы хотите эхо каждого из них с его ценой.

for($i=0;$i<count($_SESSION['products']['names']);$i++) { 
echo $_SESSION['products']['names'][$i] . " " . $_SESSION['products']['names']['price'][$i]; 
} 
+0

Я дал ему попробовать, но он дает мне ошибку этот код –

+0

, потому что «имена» - ассоциативный массив, нет '['names'] [$ i]' –

+0

Какая ошибка у вас возникла[email protected] array_push не создает ассоциативный массив –

0

Это ваша проблема ...

// Here your assigning `['names']` as a string.. 
array_push($_SESSION['products']['names'],$product->getName()); 

// Then here you're overwriting the string with an array... 
array_push($_SESSION['products']['names']['prices'], $product->getPrice(Currency::getCurrentCurrency())); 

Измените первый один на это ..

array_push($_SESSION['products']['names']['name'],$product->getName()); 

$product->getPrice() Предполагая, что возвращает строку или номер ...

foreach ($_SESSION['products'] as $val){ 
    foreach($val['names'] as $name){ 
     echo $name['name']; 
     echo $name['prices']; 
    } 
} 
+0

Отчасти это делает работу, но все еще массив для преобразования строки ошибки –

+0

Нет решения, полного уведомления :) Неопределенные имена Я не знаю, что делать действительно –

+0

array_push() ожидает, что параметр 1 будет array, null задано в Неопределенный индекс: имена в Недопустимый аргумент, предоставленный foreach() в –

1

Использование join() функция в вашем Еогеасп, как это:

echo join('<br>', $val); 

Или вместо

echo $val['prices']; 

написать

echo $val['names']['prices']; 
+0

, есть ли у вас более эффективное решение? –

+0

Я думаю, вы должны полностью перестроить этот код. Stg like $ _SESSION ['products'] может содержать все детали в ассоциативном массиве: id, name, price и т. Д. – Szektor

Смежные вопросы