この記事では、主に PHP ソース コードに関する第 19 回の簡単な説明を紹介します。array_file 関数と range 関数については、必要な方は参考にしてください。 PHP ソースコードに関する簡単な説明 19: array_file、range 関数について
array_fill
(PHP 4 >= 4.2.0, PHP 5)
array_fill — 指定された値で配列を埋めるvalue
array array_fill (int start_index, int num,mixed value)
array_fill() value パラメータの値を使用して、指定されたキー名から始まる num 個のエントリで配列を埋めます。 start_index パラメータ。 num はゼロより大きい数値である必要があることに注意してください。そうでない場合、PHP は警告を発行します。
パラメータ start_index には、文字列、整数、および浮動小数点型のみを指定できます。
ソース コードは次のとおりです。switch (Z_TYPE_PP(start_key)) {case IS_STRING:case IS_LONG:case IS_DOUBLE: ....... convert_to_long_ex(start_key); ......}
range
(PHP 3 >= 3.0.8, PHP 4, PHP 5)# のハッシュ テーブルに追加します。## range - 指定した範囲内のセルを含む配列を作成します
Description
range() は、次のセルを返します。配列内で下位から上位まで (自分自身を含む)。 Low > High の場合、シーケンスは High から Low に進みます。
文字配列を使用する例:
if (Z_TYPE_P(zlow) == IS_STRING && Z_TYPE_P(zhigh) == IS_STRING && Z_STRLEN_P(zlow) >= 1 && Z_STRLEN_P(zhigh) >= 1) { int type1, type2; unsigned char *low, *high; long lstep = (long) step; type1 = is_numeric_string(Z_STRVAL_P(zlow), Z_STRLEN_P(zlow), NULL, NULL, 0); type2 = is_numeric_string(Z_STRVAL_P(zhigh), Z_STRLEN_P(zhigh), NULL, NULL, 0); if (type1 == IS_DOUBLE || type2 == IS_DOUBLE || is_step_double) { goto double_str; } else if (type1 == IS_LONG || type2 == IS_LONG) { goto long_str; } convert_to_string(zlow); // 转化为字符串,此函数的实现在zend_operators.c的536行:ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) convert_to_string(zhigh); low = (unsigned char *)Z_STRVAL_P(zlow); // 当所给字符串长度大于1时,取第一个字符 high = (unsigned char *)Z_STRVAL_P(zhigh); if (*low > *high) { // 递减数组 if (lstep <= 0) { err = 1; goto err; } for (; *low >= *high; (*low) -= (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low - lstep) < 0) { break; } } } else if (*high > *low) { // 递增数组 if (lstep <= 0) { err = 1; goto err; } for (; *low <= *high; (*low) += (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low + lstep) > 255) { // 只支持ASCII的255个字符 break; } } } else { // 开始和结束相等,则只返回包含一个元素的数组 add_next_index_stringl(return_value, low, 1, 1);}
浮動小数点と整数の処理は基本的に似ていますが、ハッシュ テーブルへの書き込み方法が異なるだけです
整数型は使用しますadd_next_index_long
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
PHP ソース コード 18 についての簡単な説明: array_diff_key、array_diff_assoc、array_udiff_assoc について Function
PHP ソース コード 16 についての簡単な説明: array_count_values について function
以上がPHP ソースコードに関する簡単な説明 19: array_file、range 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。