如何在php中取消设置JSON数组的一些元素

时间:2015-10-26 13:07:23

标签: php arrays json

我试图取消设置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 开头都可以取消设置。

2 个答案:

答案 0 :(得分:2)

您可以像{/ p>一样使用if(preg_match('/^[X]{2}/',$value['pname'])){ unset($json[$key]); }

new

Demo

答案 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);

https://3v4l.org/hZLDP