我有下面的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个值,所以它不能是数组。
答案 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开始,方括号成为数组的简写,因此很容易看到混淆。
我建议先查看这些值是如何保存的,然后再逆转过程。