2017-07-26 58 views
0

下面的代码的阵列输出以这种方式被用于:停止父[0]时存储在变量中的阵列中的阵列

Screenshot

我们不希望的部分以红色突出显示,我们如何消除这一点?

<?php 

$test = array(); 

$test2[] = array(
    'key1' => '111', 
    'key2' => '111', 
    'key3' => '111', 
); 

$test2[] = array(
    'key1' => '222', 
    'key2' => '222', 
    'key3' => '222', 
); 

$test['tax_query'] = array(
    'relation' => 'AND', 
    $test2, 
); 

print_r($test); 

?> 
+0

0是元素的索引。数组中的所有元素都有索引。 – memo

+0

0是指数值,如果您不需要像您在图片中所说的那样,您可以使用'$ test ['tax_query'] = array( 'relation'=>'AND', “data”=> $ test2 );' –

+0

我认为你正在试图做这样的事情$ test ['tax_query'] = array( 'relation'=>'AND', 'meta_query'=> $ test2, ); –

回答

0

array_merge()或联盟运营商将做好这项工作,没有什么太棘手。

代码:(Demo

$test = array(); 

$test2[] = array(
    'key1' => '111', 
    'key2' => '111', 
    'key3' => '111', 
); 

$test2[] = array(
    'key1' => '222', 
    'key2' => '222', 
    'key3' => '222', 
); 

$test['tax_query']=array_merge(['relation'=>'AND'],$test2); // array_merge 
//$test['tax_query']=['relation'=>'AND']+$test2; // array Union operator 

print_r($test); 

输出:

Array 
(
    [tax_query] => Array 
     (
      [relation] => AND 
      [0] => Array 
       (
        [key1] => 111 
        [key2] => 111 
        [key3] => 111 
       )  
      [1] => Array 
       (
        [key1] => 222 
        [key2] => 222 
        [key3] => 222 
       )  
     )  
) 
1

$test2上循环并将其追加到主阵列。

更新代码:

<?php 
$test = array(); 
$test2[] = array(
    'key1' => '111', 
    'key2' => '111', 
    'key3' => '111', 
); 

$test2[] = array(
    'key1' => '222', 
    'key2' => '222', 
    'key3' => '222', 
); 
$test['tax_query'] = array(
    'relation' => 'AND', 
// $test2, 
); 
if (! empty($test2)) { 
foreach ($test2 as $testArr) { 
    $test['tax_query'][] = $testArr; 
} 
} 
print_r($test); 
?> 

Demo:

0

试试这个

<?php 

$test = array(); 

$test2[] = array(
    'key1' => '111', 
    'key2' => '111', 
    'key3' => '111', 
); 

$test2[] = array(
    'key1' => '222', 
    'key2' => '222', 
    'key3' => '222', 
); 

$test['tax_query'] = array(
    'relation' => 'AND', 
    $test2, 
); 

$finalStr = str_replace("","[0] => Array",print_r($test,true),1); 

echo $finalStr; 

?> 
0

添加splat operatorAlive To Die's answer将帮助你解开动态数组(如果您使用的PHP版本5.6和以上)

DEMO

<?php 

$test = array(); 

$test2[] = array(
    'key1' => '111', 
    'key2' => '111', 
    'key3' => '111', 
); 

$test2[] = array(
    'key1' => '222', 
    'key2' => '222', 
    'key3' => '222', 
); 

$test['tax_query'] = array(
    'relation' => 'AND' 
); 

array_push($test['tax_query'], ...$test2); // Unpack and add to array with array_push 

print_r($test); 

这种方法是有帮助的,如果你不能确定$test2的数组数。