从2个数组在另一个数组中创建一个数组

时间:2019-08-03 20:47:44

标签: php

im试图将一个数组中的凭证项输入到另一个数组中,但是在创建该数组时,它会不断添加一些本来不应放入的项

array(
       $parentcat ('id' =>'1000', 'name' => 'assets',)
                  ('id' => '2000', 'name' => 'expenses'),
       $categories('id' => '1100', 'name' =>'cash', ‘cat’ => 1000)
                  ('id' => '1200', 'name' => 'AR', ‘cat’ => 1000)
                  ('id' => '2100', 'name' => 'AP', ‘cat’ => 2000)
                  ('id' => '2200', 'name' => 'payroll', ‘cat’ => ‘2000’))

我尝试遍历每个数组并检查

for($k = 0; $k < count($parentCat); $k++) {
            for ($j = 0; $j < count($categories); $j++) {
                //echo $parentCat[$k]['id'] . ' ' . $categories[$j]['cat'];
                if ($parentCat[$k]['id'] == $categories[$j]['cat']) {
                //echo $categories[$j]['cat'] . '==' . $parentCat[$k]['id'];
                $categories_dropdown[$categories[$j]['id']] = $categories[$j]['name'];
                } 
                $parent[$parentCat[$k]['name']] = $categories_dropdown;
            }                
        }

我想要这个

$parentcat('assets' => array('id' =>'1100', 'name' => 'cash'),('id' =>'1200' 'name' => 'AR'),
          'expenses' => array('id' => '2100', 'name' => 'AP'),('id' => '2200' 'name' => 'payroll))


for some reason i get 

$parentcat('assets' => array('id' => '1100', 'name' => 'cash'),('id'=> '1200' 
 'name' => 'AR'),
          'expenses' => array('id' => '1100' => 'cash'),('id' =>'1200','name' => 'AR'),('id' => '2100', 'name' => 'AP'),('id' => '2200', 'name' => 'payroll))

2 个答案:

答案 0 :(得分:0)

我不确定$ categories_dropdown中是否需要输出,但是以下内容将为您提供$ parent的预期输出。当您添加到数组时,它应该在if语句

<?php 

$parentcat = [['id' =>'1000', 'name' => 'assets'], ['id' => '2000', 'name' => 'expenses']];
$categories = [ ['id' => '1100', 'name' =>'cash', 'cat' => '1000'],
            ['id' => '1200', 'name' => 'AR', 'cat' => '1000'],
            ['id' => '2100', 'name' => 'AP', 'cat' => '2000'],
              ['id' => '2200', 'name' => 'payroll', 'cat' => '2000']];


for($k = 0; $k < count($parentcat); $k++) {
    for ($j = 0; $j < count($categories); $j++) {
        if ($parentcat[$k]['id'] == $categories[$j]['cat']) {
            $categories_dropdown[$parentcat[$k]['id']] = $categories[$j]['name'];
            $parent[$parentcat[$k]['name']][] = $categories[$j];
        } 

    }                
}


echo "<pre>";
print_r($parent);
echo "</pre>";

?>

答案 1 :(得分:0)

只需在$parent[$parentCat[$k]['name']] = $categories_dropdown语句内移动if,否则无论条件是否满足,都将分配变量,但是只有条件满足时,值才会更改。这就是为什么您得到意外结果的原因。