从数组php中删除第一级索引

从数组php中删除第一级索引,php,arrays,Php,Arrays,我有一个数组,我想从中删除第一级索引并保留其值。 可以不使用循环吗 输入数组: Array ( [0] => Array( [2135] => Array( [id] => 2135 [first_name] => John [last_name] => Doe

我有一个数组,我想从中删除第一级索引并保留其值。
可以不使用循环吗

输入数组:

Array (
    [0] => Array(
             [2135] => Array(
                         [id] => 2135
                         [first_name] => John
                         [last_name] => Doe
                       )
            ),
    [1] => Array (
             [3245] => Array(
                         [id] => 3245
                         [first_name] => Sally
                         [last_name] => Smith
                       )
            )
)
Array (
     [2135] => Array(
                 [id] => 2135
                 [first_name] => John
                 [last_name] => Doe
               ),


     [3245] => Array(
                 [id] => 3245
                 [first_name] => Sally
                 [last_name] => Smith
               )
)
$file_array = array();
foreach($array_name as $row =>$value){
    foreach ($value as $row1 =>$value1){
        if(in_array($value1, $file_array)){
        }
        else{
        $file_array[] =$value1;
        }
    }
}
预期输出:

Array (
    [0] => Array(
             [2135] => Array(
                         [id] => 2135
                         [first_name] => John
                         [last_name] => Doe
                       )
            ),
    [1] => Array (
             [3245] => Array(
                         [id] => 3245
                         [first_name] => Sally
                         [last_name] => Smith
                       )
            )
)
Array (
     [2135] => Array(
                 [id] => 2135
                 [first_name] => John
                 [last_name] => Doe
               ),


     [3245] => Array(
                 [id] => 3245
                 [first_name] => Sally
                 [last_name] => Smith
               )
)
$file_array = array();
foreach($array_name as $row =>$value){
    foreach ($value as $row1 =>$value1){
        if(in_array($value1, $file_array)){
        }
        else{
        $file_array[] =$value1;
        }
    }
}
试试这个

$a = array (
    array(
        '2135' => array(
            'id' => 2135,
            'first_name' => 'John',
            'last_name' => 'Doe'
        )
    ),
    array (
        '3245' => array(
            'id' => 3245,
            'first_name' => 'Sally',
            'last_name' => 'Smith',
        )
    )
);
$reduce = function ($new = array(), $x) {
    $new[array_keys($x)[0]]=array_values($x)[0];
    return $new;
};

$output = array_reduce($a, $reduce);

// var_dump($output);
简短(评论)回答:


没有回路将很困难,但使用回路的可能解决方案是:


没有循环就无法完成实际上可以,但开发人员不清楚。您可以使用
迭代器
。你会发现更多的细节,这就是我不回答的原因。它是重复的。@AlanMachado
迭代器到数组
在内部使用循环,就像我说过的:开发人员不清楚。它不会为、
而为
或为每个声明任何
。但是,任何需要对多个元素进行数组操作的函数都必须对其进行迭代,所以…为什么需要“修复”数组?你不能从一开始就以正确的方式构建阵列吗?请不要要求OP在没有解释其工作原理的情况下“尝试”这些东西。您的答案可以阅读给其他搜索帮助和阅读此问题的用户,他们可能无法理解您的解决方案为什么适用。我认为它的工作原理相当明显。它使用
array\u reduce
,并执行OP想要的操作,而不使用循环(除非您计算
array\u reduce
中隐含的循环)。我认为它也比
array\u filter
答案更可取,因为它不需要新的全局变量。你为什么这么不高兴?我没有告诉你的答案是错误的,也没有说你应该代表我撤回它,我只是(礼貌地)建议你对你的代码做一些简短的解释。这只是社区实践。我认为我们有可能会积累误解。我没有生气,我也没有把你理解为说我错了,或者说我应该收回它。我看到你提供了另一个同样有效的答案,我现在就投赞成票:)。不过,我不打算添加解释,因为我真的想不出任何可以添加的内容。任何人都可以用谷歌搜索
array\u reduce
,这就是所有需要的解释。好吧,这是很有道理的。对不起,如果我误解了你的观点