Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 改变多维数组的值_Php_Multidimensional Array - Fatal编程技术网

Php 改变多维数组的值

Php 改变多维数组的值,php,multidimensional-array,Php,Multidimensional Array,我有一个多维数组中的mysql查询结果,如下所示: Array ( [0] => stdClass Object ( [name] => john doe [id] => john@doe.com [userlevel] => 1 ) [1] => stdClass Object ( [name] => mary jane [id] => mary@jane.com [userlevel] => 5 ) [2] => stdClass

我有一个多维数组中的mysql查询结果,如下所示:

Array ( 
[0] => stdClass Object ( [name] => john doe [id] => john@doe.com [userlevel] => 1 ) 
[1] => stdClass Object ( [name] => mary jane [id] => mary@jane.com [userlevel] => 5 ) 
[2] => stdClass Object ( [name] => joe blow [id] => joe@blow.com [userlevel] => 1 )
);
我想循环这些,检查[userlevel]值的值,如果=='5',则修改[name]值。其想法是在具有特定用户级别的用户旁边提供一个可视指示器


我尝试使用foreach循环,但无法使其工作。

您尝试了什么?这样的办法应该行得通

foreach ($result as $i => $item)
{
    if ($item->userlevel == 5)
        $result[$i]->name = 'modified name';
}

除非引用数组,否则foreach操作指定数组的副本,而不是数组本身。foreach对数组指针有一些副作用。在foreach期间或之后,如果不重置数组指针,请不要依赖它。

foreach ($array as $i => &$user) {
    if ($user->userlevel == 5) {
        $user->name = 'foo';
    }
}
注意:符号和
&
在这里非常重要

或者:

for ($i = 0, $arrayLen = count($array); $i < $arrayLen; ++$i) {
    if ($array[$i]->userlevel == 5) {
        $array[$i]->name = 'foo';
    }
}
for($i=0,$arrayLen=count($array);$i<$arrayLen;++$i){
如果($array[$i]->userlevel==5){
$array[$i]->name='foo';
}
}

@LucM:你怎么知道?OP提到尝试使用foreach循环,但没有代码可供我们查看。这段代码在中运行得很好。我使用了您的代码定义
$result=array()
$result['a']=array('name'=>'Hello','userlevel'=>5)
但它不起作用…@LucM:是的,但在这个问题中,数组包含的是对象(
stdClass Object
),而不是数组。