我试图取消设置JSON数组的某些元素,因此如果 pname 值以 XX 开头,则应取消设置。普通的JSON字符串给我这个
$json = str_replace('"', '"', $loc);
[{"uid":"352","pcode1":"AB1","pname":"XXAB1"},....}]
如果我像这样硬编码 pname 值
foreach ($json as $key => $value)
{
if (in_array('XXAB1', $value)) {
unset($json[$key]);
}
}
$j = json_encode($json);
echo $j;
它可以取消设置该数组,但我该如何动态执行此操作?因此,每个 pname 值以 XX 开头都可以取消设置。
答案 0 :(得分:2)
答案 1 :(得分:1)
在您的foreach中,您可以使用strpos
来确定XX
是否位于字符串的开头。
使用===
严格检查是否已返回0
而不是false
<?php
$json = json_decode('[{"uid":"352","pcode1":"AB1","pname":"XXAB1"},{"uid":"352","pcode1":"AB1","pname":"XAB1"}]',true);
foreach ($json as $key => $value) {
if(strpos($value['pname'], 'XX') === 0) {
unset($json[$key]);
}
}
$j = json_encode($json);
echo $j;
print_r($json);