-3

短い:メイン キーを知らなくても、SUBARRAY から名前付きのキー/値を取得する方法はありますか?

長いです:

テキストファイルを抽出し、それらを個々の/単一の配列に変換するforeachループがあります(各ファイル間の配列をリセットします)...

例:

Array
(
    [Blah Blah] => Array
        (
            [number] => 10
            [name] => nameBlah
            [image] => 
        )
)


Array
(
    [pinkblue597] => Array
        (
            [number] => 18
            [name] => nameBlah68
            [image] => 
        )
)

(配列に変換する最初の部分はプロセスの複数の部分で使用されるため、不要なコードを追加したくありません)

「name」と「number」の値を抽出したいのですが、キーの値・形式が事前にわかりません。 ・例:pinkblue597

もしそうならprint_r、私は望むように配列を見ます...

print_r($found,true)."\n";

しかし、これを行うと$name=$found[0];、「$name」の結果が得られません...

また

これを行うと$name=$found[0]["name"]; 、「$name」の結果が得られません...

foreach ループでこれを行うこともできますが、効率が悪いようです...

PSこの配列には1つの(不明な)キーとサブ配列のみがあります。サブ配列は常に同じです。

編集:コードを見やすくしました(これを行うのを忘れていました)

4

3 に答える 3

0

array_map()を使用してこれを実現できます...

array_map — 指定された配列の要素にコールバックを適用します。これにより、コールバック関数を介してすべての配列要素がループされ、サブ配列に存在する各要素を出力できます..

<?php 
$myArry = array(
              'Blah Blah' => array(
                     'number' => 10, 
                     'name' => 'Blah Blah 1', 
                   ), 
              'pinkblue597' => array(
                     'number' => 15, 
                     'name' => 'Blah Blah 2', 
                   )
        );

array_map(function($arr){ 
    echo 'Name : '.$arr['name'].'<br>'; 
    echo 'Number : '.$arr['number'].'<br>';     
},$myArry);

?>

これにより、次のことが得られます。

Name : Blah Blah 1
Number : 10
Name : Blah Blah 2
Number : 15
于 2016-08-20T13:22:18.393 に答える
0

ネストされた配列をすぐに破棄するだけの場合、最初にネストされた配列を作成する理由はわかりませんが、配列には単一の要素しかないように見え、その要素だけを気にするので、簡単に使用できますarray_pop

$a = [
    'somethingUnknown13582563' => [
        'name' => 'first name',
        'number' => 15
    ],
];

$data = array_pop($a);
echo $data['name']; // gives you 'first name'

array_pop破壊的であることに注意してください。したがって、この動作が望ましくない場合は、end代わりに次のようなものを使用できます。

$data = end($a); // same effect as array_pop but non-destructive
echo $data['name']; // also gives you 'first name'

そうは言っても、foreach構造は必ずしも非効率的ではありません。あなたの本当の懸念は、ネストされた配列を逆参照する簡単な方法を見つけることだと思います。あなたの場合、それを行う最も簡単な方法は、end($a)['name']探しているような直接的な逆参照を提供するようなものを使用することです。

于 2016-08-20T12:18:05.790 に答える