Php 将数组添加到数组中,并将其与特定键关联
我有这样一个数组:Php 将数组添加到数组中,并将其与特定键关联,php,arrays,array-push,Php,Arrays,Array Push,我有这样一个数组: $args = array( 'post_type' => 'player', 'posts_per_page' => -1, ); 然后我有另一个数组,例如: [stateArray] => Array ( [0] => OR [1] => WI ) 我需要将其添加到原始的$args数组中,以获得此结果: $args = array( 'post_type' =>
$args = array(
'post_type' => 'player',
'posts_per_page' => -1,
);
然后我有另一个数组,例如:
[stateArray] => Array
(
[0] => OR
[1] => WI
)
我需要将其添加到原始的$args
数组中,以获得此结果:
$args = array(
'post_type' => 'player',
'posts_per_page' => -1,
'meta_query' => array(
'compare' => 'AND',
[0] => array(
'key' => 'state',
'value' => 'OR',
'compare' => '=',
),
[1] => array(
'key' => 'state',
'value' => 'WI',
'compare' => '=',
),
)
);
Array (
[post_type] => player
[posts_per_page] => -1
[0] => Array
(
[0] => Array
(
)
[1] => Array
(
[key] => town_state
[value] => OR
[compare] => =
)
[2] => Array
(
[key] => town_state
[value] => WI
[compare] => =
)
)
)
正在尝试此代码:
$stateArray = $_POST['stateArray'];
$state_array_wrapper = array('meta_query' => array());
foreach ($stateArray as $state) {
$single_state_array = array(
'key' => 'town_state',
'value' => $state,
'compare' => '='
);
array_push($state_array_wrapper, $single_state_array);
}
$state_array_wrapper = array_values($state_array_wrapper);
array_push($args, $state_array_wrapper);
我得到这个结果:
$args = array(
'post_type' => 'player',
'posts_per_page' => -1,
'meta_query' => array(
'compare' => 'AND',
[0] => array(
'key' => 'state',
'value' => 'OR',
'compare' => '=',
),
[1] => array(
'key' => 'state',
'value' => 'WI',
'compare' => '=',
),
)
);
Array (
[post_type] => player
[posts_per_page] => -1
[0] => Array
(
[0] => Array
(
)
[1] => Array
(
[key] => town_state
[value] => OR
[compare] => =
)
[2] => Array
(
[key] => town_state
[value] => WI
[compare] => =
)
)
)
我不知道为什么在最后一个数组中根本看不到
'meta\u query'
,也不知道如何将这两个$single\u state\u数组
推到meta\u query中,即使我看到它出现了。如何正确地做到这一点 您需要为$args提供meta_查询的密钥
然后你需要推到那个数组
$args['meta_query'] = array('compare'=>'AND');
foreach ($stateArray as $state) {
$single_state_array = array(
'key' => 'town_state',
'value' => $state,
'compare' => '='
);
array_push($args['meta_query'], $single_state_array);
/* short hand in php 7 */
//$args['meta_query'][] = $single_state_array;
}
这似乎很简单。如果我误读了请告诉我
$args['meta_query'] = array('compare'=>'AND');
foreach($stateArray as $val)
$args['meta_query'][] = array('key'=>'town_state', 'value'=>$val, 'compare'=>'=');
仅此而已。您显示为“我需要什么”的示例是不可能的。数组中不能有没有键值的元素。在一个数组中插入了两个数组,但两个数组都没有键。下面的答案给出了关键值0和1。当然@kainaw,你是对的。我更新问题。我不知道为什么,在编写这样的代码时,您不必编写[0]=>部分,但下面选择的答案对我、关键点和所有方面都有效。完美,非常有魅力!感谢您在PHP7速记中的注释!这也适用于php,希望您使用PHP7,PHP5需要将数组创建为“array()”,PHP7您可以使用“$arr=[];”祝您好运