PHP:如果数组中存在值,则分配一个新值并将所有值推送到新数组
我想检查数据库中的JSON数组是否有值。每个值对应一个WordPress类别ID(例如,“电梯”=120)PHP:如果数组中存在值,则分配一个新值并将所有值推送到新数组,php,json,array-push,Php,Json,Array Push,我想检查数据库中的JSON数组是否有值。每个值对应一个WordPress类别ID(例如,“电梯”=120) 如果它确实存在,我需要将它推送到一个名为$features的数组中,以便稍后运行一个脚本,创建WordPress post,将现有的数字(ID)数组插入到一篇文章中,如本例所示: $my_post = array( 'post_title' => $post_title, 'tax_input' => array( 'property_
如果它确实存在,我需要将它推送到一个名为$features的数组中,以便稍后运行一个脚本,创建WordPress post,将现有的数字(ID)数组插入到一篇文章中,如本例所示:
$my_post = array(
'post_title' => $post_title,
'tax_input' => array(
'property_category' => array( $features )
主要代码(我知道我可能还很远):
您可以使用
if
而不是switch
if (in_array("basement", $options)) {
array_push($features,145);
}
if (in_array("bathtub", $options)) {
array_push($features,167);
}
if(in_array("boiler", $options)) {
array_push($features,105);
}
因为switch语句的计算结果(例如)为
switch ([]) {
case true: ...
case false: ...
case true: ...
这不符合你的意愿这里有很多事情需要解决。首先,假设
$options
是一个相当标准的数组:
$options = ['basement', 'bathtub'];
现在,您将$features
设置为一个数组来保存结果:
$features = array();
在开关
语句中不能进行大量计算。在数组($basic,$options)&“basic”!=错误:您正在尝试对“地下室”进行两个测试,而您需要做的只是让开关决定信息是否存在。只需测试每一个价值购买循环通过选项和测试的价值
foreach($options as $option) {
switch ($option) {
case "basement":
array_push($features,145);
break;
case "bathtub":
array_push($features,167);
break;
case "boiler":
array_push($features,105);
break;
}
}
以下是:
返回
Array
(
[0] => 145
[1] => 167
)
假设有选项的值列表,则可以使用选项和值组合创建一个数组。然后使用array\u intersect\u key()
$options = ['basement', 'bathtub'];
$optionValues = ['basement' => 145, 'bathtub' => 167, 'boiler' => 105];
$features = array_values(array_intersect_key($optionValues, array_flip($options)));
print_r($features);
给
Array
(
[0] => 145
[1] => 167
)
这样做的好处是,当/如果您需要更改映射时,只需更新$optionValues
数组。您打算如何处理“base”!=false
?还可以添加$db->options
的示例值,以便我们可以看到您正在处理的内容。
$options = ['basement', 'bathtub'];
$optionValues = ['basement' => 145, 'bathtub' => 167, 'boiler' => 105];
$features = array_values(array_intersect_key($optionValues, array_flip($options)));
print_r($features);
Array
(
[0] => 145
[1] => 167
)