<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この記事は、例として記事のコンテンツのみを出力します,実際のロジックは含まれていません</span></span><span>
</span><span><span class="hljs-comment">// --------------------------- 文章 ---------------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<h1>それを使用する方法 array_keys 配列キーの重複エラーは避けてください?PHP 初心者のためによくある質問</h1>
<p>存在する PHP 真ん中,配列は非常に柔軟なデータ構造です,キーと値を同時に保存できます。しかし,初心者がしばしば遭遇する問題です:当你存在する数组真ん中不小心定义了重复的键,後で定義された値は、前の値を上書きします,データの損失または論理エラーを引き起こします。</p>
<h2>配列キーの重複の一般的な状況</h2>
<p>簡単な例を挙げてください:</p>
<pre><code </span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span>="</span><span><span class="hljs-title">language</span></span><span>-</span><span><span class="hljs-title">php</span></span><span>">
$</span><span><span class="hljs-title">data</span></span><span> = [
"</span><span><span class="hljs-title">id</span></span><span>" => 1,
"</span><span><span class="hljs-title">name</span></span><span>" => "</span><span><span class="hljs-title">Alice</span></span><span>",
"</span><span><span class="hljs-title">id</span></span><span>" => 2
];
</span><span><span class="hljs-title">print_r</span></span><span>($</span><span><span class="hljs-title">data</span></span><span>);
</</span><span><span class="hljs-title">code</span></span><span>></</span><span><span class="hljs-title">pre</span></span><span>>
<</span><span><span class="hljs-title">p</span></span><span>>実行後,数组真ん中只会保留最后一次的 <</span><span><span class="hljs-title">code</span></span><span>>"</span><span><span class="hljs-title">id</span></span><span>" => 2</</span><span><span class="hljs-title">code</span></span><span>>,初めて定義しました <</span><span><span class="hljs-title">code</span></span><span>>"</span><span><span class="hljs-title">id</span></span><span>" => 1</</span><span><span class="hljs-title">code</span></span><span>> カバーされています。</</span><span><span class="hljs-title">p</span></span><span>>
<</span><span><span class="hljs-title">h2</span></span><span>>使い方 </span><span><span class="hljs-title">array_keys</span></span><span> 繰り返しキーを確認してください?</</span><span><span class="hljs-title">h2</span></span><span>>
<</span><span><span class="hljs-title">p</span></span><span>><</span><span><span class="hljs-title">code</span></span><span>></span><span><span class="hljs-title">array_keys</span></span><span>()</</span><span><span class="hljs-title">code</span></span><span>> 函数可以返回数组真ん中所有键组成的新数组,キーが重複しているかどうかを検出するために使用できます。</</span><span><span class="hljs-title">p</span></span><span>>
<</span><span><span class="hljs-title">pre</span></span><span>><</span><span><span class="hljs-title">code</span></span><span> </span><span><span class="hljs-title">class</span></span><span>="</span><span><span class="hljs-title">language</span></span><span>-</span><span><span class="hljs-title">php</span></span><span>">
$</span><span><span class="hljs-title">data</span></span><span> = [
"</span><span><span class="hljs-title">id</span></span><span>" => 1,
"</span><span><span class="hljs-title">name</span></span><span>" => "</span><span><span class="hljs-title">Alice</span></span><span>",
"</span><span><span class="hljs-title">id</span></span><span>" => 2
];
$</span><span><span class="hljs-title">keys</span></span><span> = </span><span><span class="hljs-title">array_keys</span></span><span>($</span><span><span class="hljs-title">data</span></span><span>);
// 統計キーの発生数
$</span><span><span class="hljs-title">keyCounts</span></span><span> = </span><span><span class="hljs-title">array_count_values</span></span><span>($</span><span><span class="hljs-title">keys</span></span><span>);
// 重複キーを見つけます
$</span><span><span class="hljs-title">duplicates</span></span><span> = </span><span><span class="hljs-title">array_filter</span></span><span>($</span><span><span class="hljs-title">keyCounts</span></span><span>, </span><span><span class="hljs-title">function</span></span><span>($</span><span><span class="hljs-title">count</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$count</span></span><span> > </span><span><span class="hljs-number">1</span></span><span>;
});
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$duplicates</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"重複キーを発見します: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">implode</span></span><span>(</span><span><span class="hljs-string">", "</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$duplicates</span></span><span>));
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"重複したキーは見つかりません"</span></span><span>;
}
このようにして、後続のデータ上書きを避けるために、プログラムロジック内のキーを複製する問題をすばやく発見できます。
PHP初心者は、配列キーのオーバーレイを無視する傾向がありますが、 Array_Keysなどの関数を使用すると、エンコードプロセス中に事前にエラーを検出および回避できます。良い習慣は、コードを作成するときに配列構造を明確に保ち、必要に応じてチェックすることです。これにより、デバッグのコストが大幅に削減される可能性があります。
関連タグ:
array_keys