:配列内のすべてのキー名を返します。検索値が指定されている場合、値を含むすべてのキーをフィルタリングできます。
<span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-variable">$search_value</span></span><span>, </span><span><span class="hljs-variable">$strict</span></span><span>);
</span></span>array_values関数:配列内のすべての値を返し、キー名を無視し、再インデックスします。
<span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>複数の学生の成績を保存する連想配列があるとします。ここでは、配列のキーが学生の名前であり、値は成績であるとします。成績が特定のスコアであるすべての学生を見つけたいと思っています。
<span><span><span class="hljs-variable">$students</span></span><span> = [
</span><span><span class="hljs-string">'John'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>,
</span><span><span class="hljs-string">'Alice'</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>,
</span><span><span class="hljs-string">'Bob'</span></span><span> => </span><span><span class="hljs-number">75</span></span><span>,
</span><span><span class="hljs-string">'Charlie'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>,
</span><span><span class="hljs-string">'David'</span></span><span> => </span><span><span class="hljs-number">95</span></span><span>
];
</span><span><span class="hljs-variable">$search_score</span></span><span> = </span><span><span class="hljs-number">85</span></span><span>;
</span><span><span class="hljs-comment">// すべての結果を取得します85学生</span></span><span>
</span><span><span class="hljs-variable">$keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-variable">$search_score</span></span><span>);
</span><span><span class="hljs-variable">$students_with_score</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>)));
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$students_with_score</span></span><span>);
</span></span>出力:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">85</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">85</span></span><span>
)
</span></span>Array_KeysとArray_Valuesを組み合わせて使用すると、特に配列の値とキーを処理する必要がある場合は、多くの実用的な機能を実現できます。
いくつかの値を繰り返す可能性のある混合連想配列があり、その配列のキーを抽出して、特定の値のみを含む再構築された配列を生成するとします。
<span><span><span class="hljs-variable">$items</span></span><span> = [
</span><span><span class="hljs-string">'item1'</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-string">'item2'</span></span><span> => </span><span><span class="hljs-string">'orange'</span></span><span>,
</span><span><span class="hljs-string">'item3'</span></span><span> => </span><span><span class="hljs-string">'banana'</span></span><span>,
</span><span><span class="hljs-string">'item4'</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-string">'item5'</span></span><span> => </span><span><span class="hljs-string">'orange'</span></span><span>
];
</span><span><span class="hljs-variable">$filter_value</span></span><span> = </span><span><span class="hljs-string">'orange'</span></span><span>;
</span><span><span class="hljs-comment">// 含まれます"orange"すべてのキー</span></span><span>
</span><span><span class="hljs-variable">$keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$items</span></span><span>, </span><span><span class="hljs-variable">$filter_value</span></span><span>);
</span><span><span class="hljs-comment">// 使用array_valuesこれらのキーに対応する値を取得します</span></span><span>
</span><span><span class="hljs-variable">$filtered_values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$items</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>)));
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered_values</span></span><span>);
</span></span>出力:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => orange
[</span><span><span class="hljs-number">1</span></span><span>] => orange
)
</span></span>多次元配列がある場合は、特定の条件を満たす配列要素の値を見つける必要がある場合があります。 array_keysとarray_valuesを組み合わせることにより、特定の条件で結果を除外できます。
<span><span><span class="hljs-variable">$products</span></span><span> = [
</span><span><span class="hljs-string">'P001'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Laptop'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">800</span></span><span>],
</span><span><span class="hljs-string">'P002'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Phone'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">400</span></span><span>],
</span><span><span class="hljs-string">'P003'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tablet'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">300</span></span><span>],
</span><span><span class="hljs-string">'P004'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Monitor'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">600</span></span><span>],
];
</span><span><span class="hljs-variable">$target_price</span></span><span> = </span><span><span class="hljs-number">400</span></span><span>;
</span><span><span class="hljs-comment">// すべての価格を等しくします400製品</span></span><span>
</span><span><span class="hljs-variable">$product_keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$products</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span>), </span><span><span class="hljs-variable">$target_price</span></span><span>);
</span><span><span class="hljs-comment">// これらの製品に関する詳細情報を入手してください</span></span><span>
</span><span><span class="hljs-variable">$target_products</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$products</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$product_keys</span></span><span>)));
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$target_products</span></span><span>);
</span></span>出力:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => Phone
[price] => </span><span><span class="hljs-number">400</span></span><span>
)
)
</span></span>2つの関数Array_ValuesとArray_Keysを組み合わせて、複雑な配列操作を完了できます。これら2つの機能を合理的に一致させることにより、配列をすばやく見つけ、フィルタリングし、再構築するのに役立ちます。これは、特に多次元配列を扱ったり、配列内の特定の値やキーをフィルタリングする場合に、実際の開発で特に重要です。コードの読みやすさと効率を大幅に改善することができます。
これら2つの機能の組み合わせをマスターすると、配列データをより柔軟に処理し、開発効率を向上させることができます。
関連タグ:
array_values array_keys