1

スクリプトから次の配列が返されます。

Array
(
    [0] => Array
        (
            [id] => 67
        )

    [1] => Array
        (
            [id] => 68
        )

    [2] => Array
        (
            [id] => 69
        )

    [3] => Array
        (
            [id] => 70
        )

)

どうすれば次のように変換できますか?

Array
(
    [0] => 67

    [1] => 68

    [2] => 69

    [3] => 70
)

返されるIDだけに興味があります。

4

4 に答える 4

3

array_map()コールバックによって返された値を返された配列に蓄積するため、これは1つの可能性です。次に、コールバックはid:を返す必要があります。

$flat = array_map(function($a) {return $a['id'];}, $orig_array);

上記は無名関数を使用するため、PHP 5.3以降が必要ですが、名前付き関数を文字列としてに渡すことで同じことが実現できますarray_map()

それ以外の場合、foreachループはかなり一般的であり、元のキーが非シーケンシャルであった場合に保持できます。

$flat = array();
foreach ($orig_array as $key => $a) {
  $flat[$key] = $a['id'];
}
于 2012-06-03T22:25:32.813 に答える
1

私はこの関数をテストしていませんが、この提案を試してください:http ://www.php.net/manual/en/function.array-values.php#104184

于 2012-06-03T22:26:19.367 に答える
1
$temp = call_user_func_array('array_merge_recursive', $arr);
$final = $temp['id'];
print_r($final);

なぜそれが機能するのかは難しいです。正直なところ、foreach ループを使用するだけです。

于 2012-06-03T22:28:17.893 に答える
1

@Mickael の答えを続けると、array_walk()関数も使用できます。

function format(&$item, $key) {
    $item = $item["id"];
}

array_walk($arr, "format");

または、ラムダ関数を使用して1行で:

array_walk($arr, create_function('&$item, $key', '$item = $item["id"];'));

配列を直接操作するため、「配列変換」と簡単に呼ぶことができます。

于 2012-06-03T22:28:24.683 に答える