Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如果数组中存在值,则分配一个新值并将所有值推送到新数组_Php_Json_Array Push - Fatal编程技术网

PHP:如果数组中存在值,则分配一个新值并将所有值推送到新数组

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_

我想检查数据库中的JSON数组是否有值。每个值对应一个WordPress类别ID(例如,“电梯”=120)
如果它确实存在,我需要将它推送到一个名为$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
)