PHP数组输出为字符串

时间:2017-01-23 17:19:26

标签: php arrays wordpress

我有下面的wordpress代码输出一个整数数组,但是当我尝试访问数组值时,它似乎不是数组而是字符串

$values = get_post_custom_values('colleagues', 123);

print_r($values); //This Outputs Array ([0]=>["418","5555"])

$arr = $values[0];
foreach($arr as $val)
{
   echo $val;   
}

上述foreach的唯一输出是[“418”,“5555”],我希望看到2个值,所以它不能是数组。

2 个答案:

答案 0 :(得分:0)

如果我使用包含如下字符串的数组初始化$values

<?php
$values = ['["418","5555"]'];
print_r($values); //This Outputs Array ([0]=>["418","5555"])


$arr = $values[0];
foreach($arr as $val)
{
   var_dump($val);   
}

我从print_r获得相同的输出。还有一个Php警告:为foreach()提供的参数无效。

所以也许你的怀疑是正确的。

但是,如果我写这样的值:

$values = [["418","5555"]];
print_r($values);

我得到输出:

Array ( [0] => Array ( [0] => 418 [1] => 5555 ) ) 

答案 1 :(得分:0)

$values[0]的值看起来像一个数组,但不是。它存储为字符串。

我们知道因为print_r()的输出。

print_r($values); //This Outputs Array ([0]=>["418","5555"])

请注意,print_r$values识别为数组,但[0] => ...旁边没有类似的标识符。

从PHP 5.4开始,方括号成为数组的简写,因此很容易看到混淆。

我建议先查看这些值是如何保存的,然后再逆转过程。