찾다
백엔드 개발PHP 튜토리얼PHP 소스 코드에 대한 간략한 토론 19: array_file, range 함수에 대하여

이 글은 주로 PHP 소스 코드에 대한 간단한 토론을 소개합니다. 19: array_file 및 range 함수에 대해 특정 참조 값이 있습니다. 이제 필요한 친구들이 참조할 수 있습니다. 19: array_file 정보, 범위 함수

array_fill

(PHP 4 >= 4.2.0, PHP 5)


array_fill — 주어진 값으로 배열을 채웁니다

Description

array array_fill ( int start_index, int num, 혼합 값 )

array_fill( ) start_index 매개변수에 의해 지정된 키부터 시작하여 value 매개변수의 값으로 num 항목으로 배열을 채웁니다. num은 0보다 큰 숫자여야 합니다. 그렇지 않으면 PHP가 경고를 발행합니다.

start_index 매개변수의 경우 문자열, 정수 또는 부동 소수점 유형만 가능합니다.

소스 코드는 다음과 같습니다.

switch (Z_TYPE_PP(start_key)) {case IS_STRING:case IS_LONG:case IS_DOUBLE:
    .......    convert_to_long_ex(start_key);
    ......}

프로그램은 먼저 return_value에 첫 번째 값을 할당한 다음 num을 1회 반복합니다. 이 값에 refcount를 추가하면 return_value

range

(PHP 3 >= 3.0.8, PHP 4, PHP 5)


range의 해시 테이블에 추가됩니다. — 지정된 셀 범위를 포함하는 배열을 만듭니다

설명

배열 범위(낮음 혼합, 높음 혼합 [, 숫자 단계] )

range()는 자신을 포함하여 배열의 낮은 값에서 높은 값으로 셀을 반환합니다. 낮음 > 높음인 경우 순서는 높음에서 낮음으로 이동합니다.

새 매개변수: 선택적 단계 매개변수가 PHP 5.0.0에 새로 추가되었습니다.

걸음값이 주어지면 단위 ​​간 걸음값으로 사용됩니다. 단계는 긍정적이어야 합니다. 지정하지 않으면 단계의 기본값은 1입니다.

코드에서 볼 수 있듯이 이 함수는 문자 배열, 부동 소수점 배열 및 정수 배열만 지원하고 증가 및 감소 형태를 모두 지원합니다(버전 4.0.1 이후에만 사용 가능)

문자 배열을 예로 들어보세요:

 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_double을 사용합니다

정수형은 add_next_index_long을 사용합니다


위 내용이 이 글의 전체 내용이길 바랍니다. 모든 사람의 학습에 도움이 될 것입니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 추천:

PHP 소스 코드에 대해 이야기하기 18: array_diff_key, array_diff_assoc, array_udiff_assoc에 대해 함수

PHP 소스 코드 16에 대한 간략한 토론: array_count_values ​​​​함수에 대하여

위 내용은 PHP 소스 코드에 대한 간략한 토론 19: array_file, range 함수에 대하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python中range函数的基本用法Python中range函数的基本用法Jan 26, 2024 pm 03:17 PM

Python中range()是一个内置函数,用于生成一个整数序列,其基本语法为“range(start, stop[, step])”,其中,start表示序列的起始值(可以省略,默认为0),stop表示序列的结束值(必须指定),step表示序列中相邻两个数之间的步长(可以省略,默认为1)。

php源码是什么php源码是什么Oct 11, 2019 am 09:35 AM

PHP源码指的就是PHP源代码,源代码是程序和网站的基础,而PHP即“超文本预处理器”,是一种通用开源脚本语言。

Python函数介绍:range函数的介绍及示例Python函数介绍:range函数的介绍及示例Nov 04, 2023 am 10:10 AM

Python函数介绍:range函数的介绍及示例Python是一种广泛应用于各种领域的高级编程语言,它具有简单易学的特点,并且有着丰富的内置函数库。其中,range函数是Python中常用的一个内置函数之一。本文将详细介绍range函数的功能以及使用方法,并通过实例来演示其具体的应用。range函数是用来生成一个整数序列的函数,它接受三个参数,分别是起始值(

使用Python的range()函数生成指定范围的数字序列使用Python的range()函数生成指定范围的数字序列Aug 22, 2023 pm 05:03 PM

使用Python的range()函数生成指定范围的数字序列在Python编程中,很常见的一个需求是生成一系列数字序列。这些数字可以用于迭代、循环、索引等各种操作。为了满足这个需求,Python提供了一个非常方便的内置函数range()。range()函数的语法如下:range(start,stop,step)其中,start表示起始值(可选,默认为0),

PHP源码运行问题:index报错解决方法PHP源码运行问题:index报错解决方法Mar 09, 2024 pm 09:24 PM

PHP源码运行问题:index报错解决方法,需要具体代码示例PHP是一种广泛使用的服务器端脚本语言,经常被用于开发动态网站和Web应用程序。然而,有时候在运行PHP源码时会遇到各种问题,其中“index报错”是比较常见的一种情况。本文将介绍一些常见的index报错原因以及解决方法,并提供具体的代码示例,帮助读者更好地处理这类问题。问题描述:在运行PHP程序时

Python函数介绍:range函数的功能和使用示例Python函数介绍:range函数的功能和使用示例Nov 03, 2023 pm 06:11 PM

Python函数介绍:range函数的功能和使用示例Python是一种优美、易读、易写的面向对象编程语言,拥有丰富而强大的函数库。其中,range()函数是Python内置函数之一,常用于生成一系列数字,常用形式为:range(start,stop[,step])。range函数的功能:range()函数可以用来生成一个整数序列,一般形式为range(

在PHP中的range()函数在PHP中的range()函数Aug 25, 2023 pm 12:01 PM

range()函数创建一个包含一系列元素的数组。它返回从开始到结束的元素。语法range(start,end,step)参数start-第一个值end-最后一个值step-范围中的增量返回值range()函数返回从start到end的元素。示例以下是一个示例-&nbsp;LiveDemo<?php$number=range(0,12,3);print_r($number);?>输出以下是输出-Array([0]=>0[1]=>3[2]=>6[3]=>9

Python 2.x 中如何使用range()函数生成整数序列Python 2.x 中如何使用range()函数生成整数序列Jul 30, 2023 pm 02:41 PM

Python是一门功能强大的编程语言,它提供了许多便捷的工具和函数来帮助我们更加高效地编写代码。其中一个常用的函数是range()函数,它用于生成一个整数序列,非常方便我们进行循环迭代或者生成列表。本文将重点介绍如何在Python2.x中使用range()函数来生成整数序列,并给出一些代码示例。range()函数在Python2.x中

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경