Php 改变多维数组的值
我有一个多维数组中的mysql查询结果,如下所示: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
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
),而不是数组。