2013-08-06 2 views
-1

Это очень пустой вопрос. Предыдущий разработчик закодировал строки, как показано нижеПоказать взорванный массив

$a = array("30"=>"ok","40"=>"yes"); 

$b = "hi"; 

$c = $a."|".$b; 

$d = explode("|",$c); 

print_r($d[0]); 

Как я могу отобразить массив array("30"=>"ok","40"=>"yes")? print_r($d[0]); кажется печатать только array

+0

Попробуйте print_r ($ d [30]); –

+0

@IdealBakija: Это не работает. –

+2

почему бы не просто 'print_r ($ d);'? – Kristian

ответ

2

Печатает «array» вместо фактических значений массива происходит потому, что строки:

$c = $a."|".$b; 

Что вы делаете, говоря:

$c = [array] + [string] + [string]; 

, который будет force array, который должен быть преобразован в string, который является просто «массивом»

, если вы действительно хотите | отделенную строки индексов массива, теоретически вы можете сделать это:

$c = implode("|",$a)."|".$b; 

Но реальное лучшим решением здесь было бы что-то добавить к массиву перед тем взрывать массив:

$a['50'] = 'hi'; 
$d = explode("|", $c); 
+1

Да, это в точности вызвано тем, что массив casting используется для строки, что является следствием использования оператора конкатенации. Невозможно восстановить исходный массив, поскольку он был преобразован в строку таким образом. –

+0

Спасибо. Тогда я должен перекодировать все это. –

+0

yah вы должны. рассмотрите возможность добавления элемента в массив напрямую, а затем взрыва. ive отредактировал мой ответ – Kristian