2

各行に2つの値を持つMySQL結果セットがあります。

これらの結果をループするたびに、それらを配列に追加したいと思います。

1つの値をキーにし、もう1つの値を配列値にします。

私はこれを試しましたが、うまくいかないようです:

$dataarray[] = $row['id'] => $row['data'];

私が持っている場合:

$resultSet = [
    ['id' => 1, 'data' => 'one'],
    ['id' => 2, 'data' => 'two'],
    ['id' => 3, 'data' => 'three']
];

生成したい:

[
    1 => 'one',
    2 => 'two',
    3 => 'three'
]
4

3 に答える 3

7

使ってみませんか

$dataarray[$row['id']] = $row['data'];

于 2010-09-11T09:50:22.287 に答える
3
$dataarray[ $row['id'] ] = $row[ 'data' ];
于 2010-09-11T09:51:24.750 に答える
0

このタスクarray_column()の代わりに使用する方が、よりエレガント/表現力豊か/モダン/簡潔です。foreach()

最初のパラメーターは、行の入力配列です。
2番目のパラメーターは、出力配列の値になる列です。
3番目のパラメーターは、出力配列のキーになる列です。

コード:(デモ

$array = [
    ['id' => 1, 'key' => 'foo', 'data' => 'a'],
    ['id' => 2, 'key' => 'bar', 'data' => 'b'],
    ['id' => 3, 'key' => 'barf', 'data' => 'c'],
];

var_export(
    array_column($array, 'data', 'id')
);

出力:

array (
  1 => 'a',
  2 => 'b',
  3 => 'c',
)

新しい第1レベルのキーを割り当てたいが、行は変更しない場合nullは、ネイティブ関数呼び出しの2番目のパラメーターとして記述します。

コード:(デモ

var_export(
    array_column($array, null, 'id')
);

出力:

array (
  1 => 
  array (
    'id' => 1,
    'key' => 'foo',
    'data' => 'a',
  ),
  2 => 
  array (
    'id' => 2,
    'key' => 'bar',
    'data' => 'b',
  ),
  3 => 
  array (
    'id' => 3,
    'key' => 'barf',
    'data' => 'c',
  ),
)

あまり実現されていない、機能のない手法は、ボディのないforeach()ループ内で配列の破棄を使用することです。(デモ

$array = [
    ['id' => 1, 'data' => 'a'],
    ['id' => 2, 'data' => 'b'],
    ['id' => 3, 'data' => 'c'],
];

$result = [];
foreach ($array as ['id' => $id, 'data' => $result[$id]]);
var_export($result);

これは、これをアドバイスする以前の回答と同等です。

foreach ($array as $row) {
    $result[$row['id']] = $row['data'];
}

出力:

array (
  1 => 'a',
  2 => 'b',
  3 => 'c',
)
于 2022-02-08T08:20:57.947 に答える