通过key = value从搜索中修改多维数组值

时间:2018-01-22 05:08:31

标签: php arrays search multidimensional-array replace

我在这里有一个数组:

$records = array(
    array(
        'id' => 2,
        'first_name' => 'John',
        'last_name' => 'Doe',
        'num' => 123,
    ),
    array(
        'id' => 4,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
        'num' => 146,
    ),
    array(
        'id' => 8,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
        'num' => 253,
    ),
    array(
        'id' => 9,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
        'num' => 632,
    )
);

如何在数组$results中搜索ID 8并修改num?例如,查找ID = 8的数组并将{5}添加到num?修改后的$result数组将为:

$records = array(
    array(
        'id' => 2,
        'first_name' => 'John',
        'last_name' => 'Doe',
        'num' => 123,
    ),
    array(
        'id' => 4,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
        'num' => 146,
    ),
    array(
        'id' => 8,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
        'num' => 258,
    ),
    array(
        'id' => 9,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
        'num' => 632,
    )
);

7 个答案:

答案 0 :(得分:2)

这一个线程技巧将解决您的问题,

$records[array_search(8, array_column($records, 'id'))]['num'] += 5;
print_r($records);

array_search - 在数组中搜索给定值,如果成功则返回第一个相应的键
array_column - 返回输入数组中单个列的值

以下是demo

答案 1 :(得分:1)

这是实现输出的一种方法

include_path= ".;D:\xampp\htdocs\"

答案 2 :(得分:1)

使用这个......

foreach ($records as $key => $value) {
    $search_value = "";
    $search_value = array_search("8",$value);
    if($search_value!="")
        $value["num"] = $value["num"]+5;
    $result[] = $value;
}
print_r($result);

答案 3 :(得分:1)

试试这个

使用&$r数组通过引用传递,这样您就可以在没有键的情况下更新for循环中的值

foreach($records as &$r){

 if($r['id'] == 8){
    $r['num'] = 258;
 }  
}

答案 4 :(得分:1)

function AddNum($arr,$id,$number)
{
    foreach($arr as $key=>$value)
    {
        if($value['id']==$id)
        {
            $arr[$key]['num']+=$number;
            return $arr;
        }

    }
}

那应该有效:) 例如:

$x=AddNum($records,2,2);
print_r($x);

答案 5 :(得分:1)



foreach($records as $key => $data) {
	if(in_array(8,$data)) {
		$records[$key]['num'] = 253+50;
	}
}

echo "<pre>";
print_r($records);
&#13;
&#13;
&#13;

答案 6 :(得分:0)

<?php
$records = array(
    array(
        'id' => 2,
        'first_name' => 'John',
        'last_name' => 'Doe',
        'num' => 123,
    ),
    array(
        'id' => 4,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
        'num' => 146,
    ),
    array(
        'id' => 8,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
        'num' => 253,
    ),
    array(
        'id' => 9,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
        'num' => 632,
    ));



 $id2 = searchForId(8, $records);



function searchForId($id, $records) {
   foreach ($records as $key => $val) {
       if ($val['id'] === $id) {

           $abc = $records[$key]['num'] = $val['num']+5;
           echo "<pre>";
           print_r($records);
       }
   }
   return null;
}
?>