繁体   English   中英

数组搜索键和替换值php

[英]Array Search key and Replace value php

我有一个像

[{"detail":"33,putih","sku":"123","price":"500000","stok":"8"},{"detail":"33,hitam","sku":"123","price":"500000","stok":"5"},{"detail":"43,hitam","sku":"123","price":"1000000","stok":"1"}]

我必须对其进行json_decode。

我想从详细信息“ 33,hitam”更改stok = 2。

但是我很困惑首先使用数组搜索并使用数组替换。

您可以这样做:

$stringarray = '[{"detail":"33,putih","sku":"123","price":"500000","stok":"8"},{"detail":"33,hitam","sku":"123","price":"500000","stok":"5"},{"detail":"43,hitam","sku":"123","price":"1000000","stok":"1"}]';
$array = json_decode($stringarray);
var_dump($array);
$replaced = replaceInObject($array, "detail", "33,hitam", "stok" , "2");
var_dump($replaced);

function replaceInObject($array, $field, $searchvalue, $valuefield, $newvalue){
    foreach($array as $element){
        if($element->$field == $searchvalue){
            $element->$valuefield = $newvalue;
        }
    }
    return $array;
}

您可以使用array_map实现此目的

$data = '[{"detail":"33,putih","sku":"123","price":"500000","stok":"8"},{"detail":"33,hitam","sku":"123","price":"500000","stok":"5"},{"detail":"43,hitam","sku":"123","price":"1000000","stok":"1"}]';
$json = json_decode($data, true);

$result = array_map(function($e) {
                        if ($e['detail'] == "33,hitam") $e['stok'] = "2";
                        return $e;
                    }, $json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM