<?php
$test = '{
"100": {
"name": "Sports",
"contentID": "100"
},
"200": {
"name": "Village",
"contentID": "200"
}
}';
$idWiseData = json_decode($test,true);
$test2 = '[
{
"contentID": "100",
"contentStatus": "active"
},
{
"contentID": "200",
"contentStatus": "active"
},
{
"contentID": "300",
"contentStatus": "active"
}
]';
$allTopics = json_decode($test2,true);
foreach ($allTopics as $key => &$topic) {
$contentInfo = [
'contentStatus' => $topic['contentStatus']
];
$topic['contentName'] = isset($idWiseData[$topic['contentID']]['name']) ? $idWiseData[$topic['contentID']]['name'] : null;
}
echo "<pre>";
print_r($allTopics);
?>
上面的代码工作正常,但我没有得到我预期的输出,实际上 $allTopics
有3个对象(contentID 100 & 200 & 300)。$idWiseData
有3个对象(contentID 100 & 200 & 300)。name
值从 $idWiseData 并替换为 $allTopics 基于contentID.contentID 300没有名字,所以不应该来这个对象。
预期输出
Array
(
[0] => Array
(
[contentID] => 100
[contentStatus] => active
[contentName] => Sports
)
[1] => Array
(
[contentID] => 200
[contentStatus] => active
[contentName] => Village
)
)
我得到的输出是
Array
(
[0] => Array
(
[contentID] => 100
[contentStatus] => active
[contentName] => Sports
)
[1] => Array
(
[contentID] => 200
[contentStatus] => active
[contentName] => Village
)
[2] => Array
(
[contentID] => 300
[contentStatus] => active
[contentName] =>
)
)
麻烦谁来更新一下我的代码。
据我了解,你需要的是 unset()
数组中的索引,如果 contentName
是 null
. 这可以通过使用 解集()
foreach ($allTopics as $key => &$topic) {
// your code here ....
if (is_null($topic['contentName'])) {
unset(allTopics[$key]);
}
}
你可以通过使用 数组切片. 但我建议你修改你的代码,并有第三个数组,必须是你的结果,所以你不需要改变任何源数据。
你没有删除数组中的索引,只是将contentName设置为null。使用 解除 来删除数组中的索引。
试试这个。
<?php
$test = '{
"100": {
"name": "Sports",
"contentID": "100"
},
"200": {
"name": "Village",
"contentID": "200"
}
}';
$idWiseData = json_decode($test,true);
$test2 = '[
{
"contentID": "100",
"contentStatus": "active"
},
{
"contentID": "200",
"contentStatus": "active"
},
{
"contentID": "300",
"contentStatus": "active"
}
]';
$allTopics = json_decode($test2,true);
foreach ($allTopics as $key => &$topic) {
$contentInfo = [
'contentStatus' => $topic['contentStatus']
];
if(isset($idWiseData[$topic['contentID']]['name'])){
$topic['contentName'] = $idWiseData[$topic['contentID']]['name'];
} else {
unset($allTopics[$key]);
}
}
echo "<pre>";
print_r($allTopics);
?>
foreach ($allTopics as $key => &$topic) {
$contentInfo = [
'contentStatus' => $topic['contentStatus']
];
$topic['contentName'] = isset($idWiseData[$topic['contentID']]['name']) ? $idWiseData[$topic['contentID']]['name'] : null;
if (is_null($topic['contentName'])) {
unset($topic['contentName']);
}
}
使用这个代码,也许能解决你的问题。