我得到了关注数组($ json_output):
array(3) {
["ProductsSummary"]=>
array(4) {
["Records"]=>
int(500)
["TotalRecords"]=>
int(5720)
["TotalPages"]=>
int(12)
["CurrentPage"]=>
int(2)
}
["Products"]=>
array(500) {
[0]=>
array(10) {
["ProductId"]=>
int(1323819499)
["ShopId"]=>
int(1856)
["ProductName"]=>
string(21) "Fossil Creole JF84757"
["Deeplink2"]=>
string(0) ""
["Brand"]=>
NULL
["Manufacturer"]=>
string(6) "Fossil"
["Distributor"]=>
NULL
["EAN"]=>
string(13) "4048803717479"
["Keywords"]=>
NULL
["Properties"]=>
array(3) {
[0]=>
array(2) {
["PropertyName"]=>
string(12) "DeliveryTime"
["PropertyValue"]=>
string(1) "5"
}
[1]=>
array(2) {
["PropertyName"]=>
string(17) "MerchantArtNumber"
["PropertyValue"]=>
string(8) "85145452"
}
[2]=>
array(2) {
["PropertyName"]=>
string(6) "gender"
["PropertyValue"]=>
string(5) "Damen"
}
}
}
[1]=>
array(10) {
["ProductId"]=>
int(1323819505)
["ShopId"]=>
int(1856)
["ProductName"]=>
string(16) "SANSIBAR Armband"
["Deeplink2"]=>
string(0) ""
["Brand"]=>
NULL
["Manufacturer"]=>
string(8) "Sansibar"
["Distributor"]=>
NULL
["EAN"]=>
NULL
["Keywords"]=>
NULL
["Properties"]=>
array(3) {
[0]=>
array(2) {
["PropertyName"]=>
string(12) "DeliveryTime"
["PropertyValue"]=>
string(1) "5"
}
[1]=>
array(2) {
["PropertyName"]=>
string(17) "MerchantArtNumber"
["PropertyValue"]=>
string(8) "85189719"
}
[2]=>
array(2) {
["PropertyName"]=>
string(6) "gender"
["PropertyValue"]=>
string(5) "Herren"
}
}
}
我需要取消设置属性中包含'Herren'的所有产品,所以我尝试了:
<?php
foreach($json_output["Products"] as & $bla)
$check = $bla["Properties"][0]["PropertyValue"] . $bla["Properties"][1]["PropertyValue"] . $bla["Properties"][2]["PropertyValue"];
if (preg_match('/Herren/',$check))
{
unset($bla);
}
?>
但它不起作用。
答案 0 :(得分:1)
array_filter为您迭代并返回一组经过滤的元素。
如果要保留元素,则回调函数返回true;如果要删除元素,则返回false。 json_encode将整个数组转换为字符串,strpos在该字符串中的任何位置查找字符串Herren。由于您不需要正则表达式,因此不需要使用比strpos慢的preg_match。
$array['Products']=array_filter($array['Products'], 'removeHerren');
function removeHerren($array){
return strpos(json_encode($array), 'Herren')===false;
}