33

私はこの種の配列を持っています:

Array
(
    [0] => Array
        (
            [0] => 88868
        )
    [1] => Array
        (
            [0] => 88867
        )
    [2] => Array
        (
            [0] => 88869
        )
    [3] => Array
        (
            [0] => 88870
        )
)

これを一次元配列に変換する必要があります。どうやってやるの?

例えばこんな..

Array
(
    [0] => 88868
    [1] => 88867
    [2] => 88869
    [3] => 88870 
)

この配列変換には、php 組み込み機能を使用できますか?

4

7 に答える 7

113

限られたユースケースでは、これで十分です:

$oneDimensionalArray = array_map('current', $twoDimensionalArray);

これは、サブアレイにこれに対する多くのエントリがある場合に、より一般化できます。

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
于 2012-01-06T08:05:04.893 に答える
19

PHP array_mergeDocs関数を使用すると、配列をフラット化できます。

$flat = call_user_func_array('array_merge', $array);

元の配列の深さが 2 レベルよりも高い場合、PHP の SPL には、RecursiveArrayIteratorそれを平坦化するために使用できる があります。

$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);

参照: 多次元配列を 1 次元配列に変換する

于 2012-01-06T08:14:07.147 に答える
3

試す:

$new_array = array();
foreach($big_array as $array)
{
    foreach($array as $val)
    {
        array_push($new_array, $val);
    }    
}

print_r($new_array);
于 2012-01-06T08:09:08.957 に答える
3
$oneDim = array();
foreach($twoDim as $i) {
  $oneDim[] = $i[0];
}
于 2012-01-06T08:09:36.773 に答える
1

うん。

$values = array(array(88868), array(88867), array(88869), array(88870));
foreach ($values as &$value) $value = $value[0];

http://codepad.org/f9KjbCCb

于 2012-01-06T08:07:06.630 に答える
0

このページを閉じるために以前に使用されたページの回答の一部には、この質問に適した回答がありました。この特定の質問には、入力データ構造のために他のページに属さないテクニックがあります。

ここでのサンプル データ構造は、単一要素のインデックス付き配列の配列です。

var_export(array_column($array, 0));

この質問が必要とするすべてです。

于 2021-01-17T12:51:52.707 に答える