0

私はPHPを使用しており、次のような配列を持っています:

Array
(
    [34] => Array
    (
        [slug] => my_slug
        [title] => my_title
    )
    [33] => Array
    (
        [slug] => my_slug2
        [title] => my_title2
    )
)

また、キー 34 と値、キー 33 とセットをループアウトする必要があります。foreach でそれらをループアウトすることはできますが、私の場合は foreach ループを使用できません。

問題 - インデックスによるループ?

私の場合は foreach ループを使用できないため、インデックスでループできるものを考え出す必要があります。

私自身の考え

配列キーをインデックスで取得できれば問題ありません。それは可能ですか?

<?php print_r( $my_array[index][0] ); ?>
<?php print_r( $my_array[index][1] ); ?>

理由

foreach を使用できない理由は、カウンターに依存しているためです。カウンターが 3 の場合、4 番目のキーを取得します (配列は 0 から始まります)。

例 1

$counter = 1;

次に、インデックス 1 にある [33] の内容を返す必要があります。

例 2

$counter = 0;

次に、インデックス 0 にある [34] の内容を返す必要があります。

4

3 に答える 3

1

おそらくこれはあなたが探しているものです...

$counter = 3; // for example
$keys = array_keys($my_array);
$needed_entry = $keys[ $counter ];

print_r( $my_array[ $needed_entry ] );
于 2013-02-14T15:11:52.900 に答える
1

解決

を使用して配列からキーを取得しarray_keys、次にカウンターを使用して、反復処理するインデックスを見つけます。次に、単純な foreach ループを使用して、サブ配列を反復処理できます。

$keys     = array_keys($array);
$index    = $keys[$counter];
$subArray = $array[$index];
foreach($subArray as $key => $value) {
    // do stuff
}

説明

例で指定した配列がarray_keys($array)返されます

array(
    0 => 34,
    1 => 33
);

したがって、この新しい配列でカウンターを使用して、反復処理する実際の配列のインデックスを把握できます。

$index = $keys[$counter];

その場合$counter = 0$index34です。$indexこれで、元の配列で使用して、反復したいサブ配列を取得するのに十分簡単に​​なりました。

$subArray = $array[$index];

この例で$counter0、変数$subArrayが保持されるようになりました

array(
    'slug'  => 'my_slug'
    'title' => 'my_title'
);

foreach を使用しない

この答えをforeachループなしで機能するように適応させるのはかなり簡単です。array_keysのドキュメントを読んで、その関数が他のタイプのループで文字列キーを持つ配列を反復処理できるようにする方法について考えてみてください。

参考文献

array_keys ドキュメント

于 2013-02-14T15:09:35.557 に答える
1

foreach を使用できない理由は、カウンターに依存しているためです。カウンターが 3 の場合、4 番目のキーを取得します (配列は 0 から始まります)。

問題ない:

var_dump($array[array_keys($array)[3]]);

(これには、配列逆参照構文のため、PHP 5.4 が必要です)

PHP 5.3 以前の場合:

$keys = array_keys($array);
var_dump($array[$keys[3]]);
于 2013-02-14T15:09:46.797 に答える