将数组推入数组中的数组

时间:2019-01-16 11:55:41

标签: php array-push

我正在尝试插入一个数组,或者(如果已经声明了一个)向其中添加元素。

  

$ data数组的Print_r输出:

Array
(
    [0] => Array
        (
            [0] => 7727368
            [1] => Array
                (
                )

        )

    [1] => Array
        (
            [0] => 7727284
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 7543419783
                        )

                )

        )

    [2] => Array
        (
            [0] => 7787473
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 7771723347
                        )

                    [1] => Array
                        (
                            [0] => 8458457
                        )

                )

        )

)
  

PHP代码:

  $idaukcji = $_POST['idaukcji'];
  $modid = $_POST['modid'];
  foreach($data as $item){
    foreach($item[1] as $subitem){
      if($subitem[0]==$idaukcji){
        if(array_key_exists('1',$subitem)){
          array_push($subitem[1],$modid);
        }
        else{
          array_push($subitem, array($modid));
        }
      }
      $tobase = base64_encode(serialize($item[1]));
      $sql="UPDATE data SET allegroaucnum='$tobase' WHERE wfnum = '$item[0]'";
      mysqli_query($conn,$sql) or die(mysqli_error($conn));
    }
  }

该脚本应检查是否已声明最深嵌套数组的索引[1]上是否存在现有数组,然后应将$modid添加到该数组,如果没有,则使用{{1 }}作为元素。

实际代码提供了我们上面看到的内容(在print_r中),但是如果我添加

$modid

之后(在其他地方)

echo $subitem[1][0];

它确实返回$ modid值,但在某种情况下它不会在print_r中显示

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试此功能:

function flat_array($array, &$result) 
{
    if(!is_array($array)) {
        return $array;
    }
    foreach ($array as $key => $item) {
        if(is_array($item)) {
            unset($array[$key]);
            flat_array($item,  $result);
        } else {
            $result[] =  $item;
        }
    }
    return $array;
}

执行代码

flat_array($array, $result);
$result = array_unique($result); // if you want to make sure thar each value is unique