ホームページ > バックエンド開発 > PHPチュートリアル > PHP ソース コードの簡単な説明 13: array_change_key_case と array_chunk の概要

PHP ソース コードの簡単な説明 13: array_change_key_case と array_chunk の概要

不言
リリース: 2023-04-01 22:08:01
オリジナル
2159 人が閲覧しました

この記事では、主に PHP ソース コード 13 についての簡単な説明を紹介します。array_change_key_case と array_chunk の導入には、必要な友人が参照できるようになりました。ディスカッション PHP ソース コード 13: array_change_key_case、array_chunk の概要

array_change_key_case

(PHP 4 >= 4.2.0, PHP 5)

array_change_key_case — 文字列キー名をすべて小文字で返す または大文字の配列

Description

array array_change_key_case (array input [, int case])

array_change_key_case() 入力配列内のすべてのキー名をすべて小文字または大文字に変更します。変更は、後者のオプションのケース引数に基づいて行われます。ここでは、CASE_UPPER と CASE_LOWER という 2 つの定数を使用できます。デフォルト値は CASE_LOWER です。この関数は数値インデックスを変更しません。

この関数を見ると、配列が配置されているハッシュ テーブルを走査し、対応するキー値を大文字または小文字 (文字列キー値の場合) に変換する必要があると思います。

それを読み取った後、いくつかの違いがあります。このプログラムは、各配列要素の参照に 1 を追加します。

array_chunk

(PHP 4 >= 4.2.0, PHP 5)

array_chunk — 配列を複数に分割します
説明

array array_chunk (array input, int size [, bool prepare_keys])

array_chunk() は配列を複数の配列に分割します。各配列内のセルの数は次のように決定されます。サイズ 。最後の配列には要素が少し少ない場合があります。結果の配列は、インデックスが 0 から始まる多次元配列のセルになります。

オプションのパラメータpreserve_keysをTRUEに設定すると、PHPが入力配列に元のキー名を保持できるようになります。 FALSE を指定すると、各結果配列には 0 から始まる新しい番号でインデックスが付けられます。デフォルト値は FALSE です。


プログラムの実装手順:

  array_init(return_value);    //    初始化返回值 数组
  zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos);
  while (zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void**)&entry, &pos) == SUCCESS) {      //    遍历HASH TABLE/* 如果不存在,则创建并初始化chunk */
   if (!chunk) {
   MAKE_STD_ZVAL(chunk);array_init(chunk);}
   /* 给数组元素的引用加一,相当于 *entry->refcount++; */
   zval_add_ref(entry);
   if (preserve_keys) {    //    保留键值
   key_type = zend_hash_get_current_key_ex(Z_ARRVAL_P(input), &str_key,&str_key_len, &num_key, 0, &pos);    //    取元素的key值类型,此值是要所元素的nKeyLength属性判断 
   if (key_type == HASH_KEY_IS_STRING) {    //    字符串类型add_assoc_zval_ex(chunk, str_key, str_key_len, *entry);
   } else {
   add_index_zval(chunk, num_key, *entry);}
   } else {
   add_next_index_zval(chunk, *entry);    //    给返回的子数组添加元素} 
   if (!(++current % size)) {    //    如果达到分割的界限,则将分割出来创建的子数组添加到返回数组中,并将子数组置为NULl
   add_next_index_zval(return_value, chunk);
   chunk = NULL;}zend_hash_move_forward_ex(Z_ARRVAL_P(input), &pos);    //    下一个元素}
   if (chunk) {add_next_index_zval(return_value, chunk);    //    剩余的元素}
ログイン後にコピー

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトを参照してください。 !

関連する推奨事項:

PHP ソース コード 12 についての簡単な説明: return_value について 戻り値


についての簡単な説明PHP ソース コード 11 : array_key_exists、in_array の概要


PHP ソース コード 10 についての簡単な説明: array_keys、array_values 関数について

######

以上がPHP ソース コードの簡単な説明 13: array_change_key_case と array_chunk の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート