精华内容
下载资源
问答
  • #include <stdio.h> void main(){ int nums[]={0,1,2,3,4,5,6,7,8,9}; int i; for(i=0;... // 这种写法和下标法其实是等价,下标法也会转换为 * (nums + i),这种写法更加接近底层 } }
  • 其中数字索引数组C语言的数组一样,下标是为0,1,2… 而关联数组下标可能是任意类型,与其它语言中hash,map等结构相似。 方法1:foreach 复制代码 代码如下: <?php $sports = array( ‘football’ => ...
  • PHP遍历数组的三种方法及效率对比分析发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本...

    PHP遍历数组的三种方法及效率对比分析

    发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递

    PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

    本文实例分析了PHP遍历数组的三种方法及效率对比。分享给大家供大家参考。具体分析如下:

    今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个。顺便写个文章总结下,如果总结不全还请朋友们指出

    第一、foreach()

    foreach()是一个用来遍历数组中数据的最简单有效的方法。

    $urls= array('aaa','bbb','ccc','ddd');

    foreach ($urls as $url){

    echo "This Site url is $url!
    ";

    }

    ?>

    显示结果:

    This Site url is aaa

    This Site url is bbb

    This Site url is ccc

    This Site url is ddd

    第二、while() 和 list(),each()配合使用。

    $urls= array('aaa','bbb','ccc','ddd');

    while(list($key,$val)= each($urls)) {

    echo "This Site url is $val.
    ";

    }

    ?>

    显示结果:

    This Site url is aaa

    This Site url is bbb

    This Site url is ccc

    This Site url is ddd

    第三、for()运用for遍历数组

    $urls= array('aaa','bbb','ccc','ddd');

    for ($i= 0;$i< count($urls); $i++){

    $str= $urls[$i];

    echo "This Site url is $str.
    ";

    }

    ?>

    显示结果:

    This Site url is aaa

    This Site url is bbb

    This Site url is ccc

    This Site url is ddd

    有时候有人也在问这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了

    下面来测试三种遍历数组的速度

    一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。

    $arr= array();

    for($i= 0; $i< 50000; $i++){

    $arr[]= $i*rand(1000,9999);

    }

    function GetRunTime()

    {

    list($usec,$sec)=explode(" ",microtime());

    return ((float)$usec+(float)$sec);

    }

    ######################################

    $time_start= GetRunTime();

    for($i= 0; $i< count($arr); $i++){

    $str= $arr[$i];

    }

    $time_end= GetRunTime();

    $time_used= $time_end- $time_start;

    echo 'Used time of for:'.round($time_used, 7).'(s)
    ';

    unset($str, $time_start, $time_end, $time_used);

    ######################################

    $time_start= GetRunTime();

    while(list($key, $val)= each($arr)){

    $str= $val;

    }

    $time_end= GetRunTime();

    $time_used= $time_end- $time_start;

    echo 'Used time of while:'.round($time_used, 7).'(s)
    ';

    unset($str, $key, $val, $time_start, $time_end, $time_used);

    ######################################

    $time_start= GetRunTime();

    foreach($arr as$key=> $val){

    $str= $val;

    }

    $time_end= GetRunTime();

    $time_used= $time_end- $time_start;

    echo 'Used time of foreach:'.round($time_used, 7).'(s)
    ';

    ?>

    测试结果:

    Used time of for:0.0228429(s)

    Used time of while:0.0544658(s)

    Used time of foreach:0.0085628(s)

    经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。

    相关阅读:

    PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的几种方法

    PHP循环遍历数组的3种方法list()、each()和while使用总结

    PHP遍历数组的方法汇总

    PHP中数组的三种排序方法分享

    php遍历数组的方法集锦

    PHP遍历数组的方法汇总

    php实现快速排序的三种方法示例

    php发送post请求的三种方法讲解

    web server使用php生成web页面的三种方法总结

    PHP删除文件夹的三种方法示例

    php生成随机密码的三种方法小结

    展开全文
  • 在这里我们重点介绍遍历字符串三种方法。  首先我们来看一道编程题目:  输入一个字符串,且都是数字,也可以是负数,转化成相应整型数并输出,若输入字母则停止。  我们知道,在C语言里有一个函数...

    在这里我们重点介绍遍历字符串的三种方法。

     
      首先我们来看一道编程题目:
     
      输入一个字符串,且都是数字,也可以是负数,转化成相应的整型数并输出,若输入字母则停止。
     
      我们知道,在C语言里有一个函数是“atoi”,它可以把字符串转换成整型数,包含在头文件stdlib.h中。以下是我们使用了这个函数的代码。
     
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2.   
    3. #define MAX_SIZE 1024  
    4.   
    5. int main()  
    6. {  
    7.     char str[MAX_SIZE] = {0};  
    8.       
    9.     int result;  
    10.     int i;  
    11.   
    12.     printf("Please input string : ");  
    13.     gets(str);  
    14.   
    15.     result = atoi(str);  
    16.   
    17.     printf("result = %d\n",result);  
    18.   
    19.     return 0;  
    20. }  
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2.   
    3. #define MAX_SIZE 1024  
    4.   
    5. int main()  
    6. {  
    7.     char str[MAX_SIZE] = {0};  
    8.       
    9.     int result;  
    10.     int i;  
    11.   
    12.     printf("Please input string : ");  
    13.     gets(str);  
    14.   
    15.     result = atoi(str);  
    16.   
    17.     printf("result = %d\n",result);  
    18.   
    19.     return 0;  
    20. }  
     
    运行结果:
     
    正数:
    [objc] view plain copy
     
    1. Please input string : 123456  
    2. result = 123456  
    [objc] view plain copy
     
    1. Please input string : 123456  
    2. result = 123456  
     
    负数:
    [objc] view plain copy
     
    1. Please input string : -123456  
    2. result = -123456  
    [objc] view plain copy
     
    1. Please input string : -123456  
    2. result = -123456  
     
    带字母的字符串:
    [objc] view plain copy
     
    1. Please input string : 123a456  
    2. result = 123  
    [objc] view plain copy
     
    1. Please input string : 123a456  
    2. result = 123  
     
      使用“atoi”函数做这道题很简单,那么我们能不能自己写一个函数来实现把字符串转换成整型数的功能呢?下面是我们自己写一个函数来实现把字符串转换成整型数的功能的代码。
     
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2.   
    3. #define MAX_SIZE 1024  
    4.   
    5. int my_atoi(charchar *str)  
    6. {  
    7.     int i = 0;  
    8.     int result = 0;  
    9.     int flag = 1;  
    10.   
    11.     if (*str == '-')  
    12.     {  
    13.         flag = -1;  
    14.         str++;  
    15.     }  
    16.   
    17.     while (*str != '\0')  
    18.     {  
    19.         if (*str >= '0' && *str <= '9')  
    20.         {  
    21.             result = result * 10 + ( *str - '0' );  
    22.         }  
    23.         else  
    24.         {  
    25.             break;  
    26.         }  
    27.   
    28.         str++;  
    29.     }  
    30.   
    31.     return result *flag;  
    32. }  
    33.   
    34. int main()  
    35. {  
    36.     char str[MAX_SIZE] = {0};  
    37.       
    38.     int result;  
    39.     int i;  
    40.   
    41.     printf("Please input string : ");  
    42.     gets(str);  
    43.   
    44.     result = my_atoi(str);  
    45.   
    46.     printf("result = %d\n",result);  
    47.   
    48.     return 0;  
    49. }  
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2.   
    3. #define MAX_SIZE 1024  
    4.   
    5. int my_atoi(charchar *str)  
    6. {  
    7.     int i = 0;  
    8.     int result = 0;  
    9.     int flag = 1;  
    10.   
    11.     if (*str == '-')  
    12.     {  
    13.         flag = -1;  
    14.         str++;  
    15.     }  
    16.   
    17.     while (*str != '\0')  
    18.     {  
    19.         if (*str >= '0' && *str <= '9')  
    20.         {  
    21.             result = result * 10 + ( *str - '0' );  
    22.         }  
    23.         else  
    24.         {  
    25.             break;  
    26.         }  
    27.   
    28.         str++;  
    29.     }  
    30.   
    31.     return result *flag;  
    32. }  
    33.   
    34. int main()  
    35. {  
    36.     char str[MAX_SIZE] = {0};  
    37.       
    38.     int result;  
    39.     int i;  
    40.   
    41.     printf("Please input string : ");  
    42.     gets(str);  
    43.   
    44.     result = my_atoi(str);  
    45.   
    46.     printf("result = %d\n",result);  
    47.   
    48.     return 0;  
    49. }  
    运行结果:
     
    正数:
    [objc] view plain copy
     
    1. Please input string : 987654321  
    2. result = 987654321  
    [objc] view plain copy
     
    1. Please input string : 987654321  
    2. result = 987654321  
     
    负数:
    [objc] view plain copy
     
    1. Please input string : -123456789  
    2. result = -123456789  
    [objc] view plain copy
     
    1. Please input string : -123456789  
    2. result = -123456789  
     
     
    带字母:
    [objc] view plain copy
     
    1. Please input string : 123456a789  
    2. result = 123456  
    [objc] view plain copy
     
    1. Please input string : 123456a789  
    2. result = 123456  
     
      我们可以看到,用我们自己编写的函数运行的结果也是正确的。那么我们该怎么样编写这个函数呢?其实这里主要的知识点是字符串的遍历问题。如果我们想把字符串转化成整型数,那么我们需要一个一个地访问字符串里的内容,即字符串遍历。
     
      首先我们介绍遍历字符串的三种方法:
     
    1. for循环(字符数组)
     
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.   
    10.     int i;  
    11.   
    12.     int len;  
    13.   
    14.     printf("Please input string : ");  
    15.     gets(src);  
    16.   
    17.     len = strlen(src);  
    18.   
    19.     printf("string = ");  
    20.   
    21.     for (i = 0; i < len; i++)  
    22.     {  
    23.         printf("%c",src[i]);  
    24.     }  
    25.   
    26.     printf("\n");  
    27.   
    28.     return 0;  
    29. }  
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.   
    10.     int i;  
    11.   
    12.     int len;  
    13.   
    14.     printf("Please input string : ");  
    15.     gets(src);  
    16.   
    17.     len = strlen(src);  
    18.   
    19.     printf("string = ");  
    20.   
    21.     for (i = 0; i < len; i++)  
    22.     {  
    23.         printf("%c",src[i]);  
    24.     }  
    25.   
    26.     printf("\n");  
    27.   
    28.     return 0;  
    29. }  
     
    运行结果:
    [objc] view plain copy
     
    1. Please input string : abcdefg123456     
    2. string = abcdefg123456  
    [objc] view plain copy
     
    1. Please input string : abcdefg123456     
    2. string = abcdefg123456  
     
      在这里我们首先利用了strlen函数测量字符数组的长度,然后用for循环遍历字符串,将输入的字符串的内容一个字符一个字符输出。
     
     
    2. while循环(字符数组)
     
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.   
    10.     int i = 0;  
    11.   
    12.     printf("Please input string : ");  
    13.     gets(src);  
    14.   
    15.     printf("string = ");  
    16.   
    17.     while (src[i] != '\0')  
    18.     {  
    19.         printf("%c",src[i]);  
    20.         i++;  
    21.     }  
    22.   
    23.     printf("\n");  
    24.   
    25.     return 0;  
    26. }  
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.   
    10.     int i = 0;  
    11.   
    12.     printf("Please input string : ");  
    13.     gets(src);  
    14.   
    15.     printf("string = ");  
    16.   
    17.     while (src[i] != '\0')  
    18.     {  
    19.         printf("%c",src[i]);  
    20.         i++;  
    21.     }  
    22.   
    23.     printf("\n");  
    24.   
    25.     return 0;  
    26. }  
     
    运行结果:
    [objc] view plain copy
     
    1. Please input string : congcong123456  
    2. string = congcong123456  
    [objc] view plain copy
     
    1. Please input string : congcong123456  
    2. string = congcong123456  
      由于输入的字符串的长度是未知的,然而我们遍历字符串的时候需要用到循环,我们知道当循环次数未知时,最好使用while语句。
     
     
    3.while循环(指针)
     
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.     charchar *temp = src;  
    10.   
    11.     printf("Please input string : ");  
    12.     gets(src);  
    13.   
    14.     printf("string = ");  
    15.   
    16.     while (*temp != '\0')  
    17.     {  
    18.         printf("%c",*temp);  
    19.         temp++;  
    20.     }  
    21.   
    22.     printf("\n");  
    23.   
    24.     return 0;  
    25. }  
    [objc] view plain copy
     
    1. #include <stdio.h>  
    2. #include <string.h>  
    3.   
    4. #define MAX_SIZE 1024  
    5.   
    6. int main()  
    7. {  
    8.     char src[MAX_SIZE] = {0};  
    9.     charchar *temp = src;  
    10.   
    11.     printf("Please input string : ");  
    12.     gets(src);  
    13.   
    14.     printf("string = ");  
    15.   
    16.     while (*temp != '\0')  
    17.     {  
    18.         printf("%c",*temp);  
    19.         temp++;  
    20.     }  
    21.   
    22.     printf("\n");  
    23.   
    24.     return 0;  
    25. }  
     
    运行结果:
    [objc] view plain copy
     
    1. Please input string : congcong123  
    2. string = congcong123  
    [objc] view plain copy
     
    1. Please input string : congcong123  
    2. string = congcong123  
      在这里我们首先定义了一个指针变量,指向数组的首地址,那为什么要定义这个指针变量呢?为什么不直接用“src++;”呢?
     
      首先,我们要知道的是数组名代表了什么:
         ①指针常量
         ②数组首元素的地址
     
      既然数组名代表了指针常量,常量怎么可以自增呢?所以不可以用“src++;”,如果使用“src++;”,那么在编译时便会报错“错误:自增运算中的左值无效”。
     
      以上为遍历字符串的三种方法,希望我们以后可以熟练地运用这三种方法遍历字符串。
     
      在上述“将字符串转化成整型数”的编程题中,还有一个小知识点,就是如何准确地将正数和负数表示出来。首先我们可以利用一个“flag”,我们将flag初始化为1,符号会出现在我们所输入的字符串的首位,只需要判断这个是不是‘-’,如果是的话,将flag置为-1,最后将结果与flag相乘即可,如果是正数,则不用管,正数乘1还是原数。
     
    转载:http://blog.csdn.net/nopoppy/article/details/52613975

    转载于:https://www.cnblogs.com/i6010/articles/7908194.html

    展开全文
  • 其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意...下面介绍PHP中遍历关联数组的三种方法: foreach [c-sharp] <?php $sports = array( 'football' => 'go...

    在PHP中数组分为两类:  数字索引数组和关联数组。其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。

    下面介绍PHP中遍历关联数组的三种方法:

    foreach

    [c-sharp]
    1. <?php 
    2. $sports = array( 
    3.     'football' => 'good'
    4.     'swimming' => 'very well'
    5.     'running'  => 'not good' 
    6.     ); 
    7.      
    8. foreach ($sports as $key => $value) { 
    9.     echo $key.": ".$value."<br />"
    10. ?> 
    <?php $sports = array( 'football' => 'good', 'swimming' => 'very well', 'running' => 'not good' ); foreach ($sports as $key => $value) { echo $key.": ".$value."<br />"; } ?>

    程序运行结果:

    football: good

    swimming: very well

    running: not good

    each

    <?php

    $sports = array(

        'football' => 'good',

        'swimming' => 'very well',

        'running'  => 'not good'

    );

    while ($elem = each($sports)) {

        echo $elem['key'].": ".$elem['value']."<br />";

    }

    ?>

    程序运行结果:

    football: good

    swimming: very well

    running: not good

    list & each

    <?php

    $sports = array(

        'football' => 'good',

        'swimming' => 'very well',

        'running'  => 'not good'

    );

    while (list($key, $value) = each($sports)) {

        echo $key.": ".$value."<br />";

    }

    ?>

    程序运行结果:

    football: good

    swimming: very well

    running: not good

    转载于:https://www.cnblogs.com/long892230/archive/2012/04/22/2669579.html

    展开全文
  • //题目:在字符串中找出第一个只出现一次字符。//如输入“abaccdeff\0”,则输出'b'。#ifndef__SELECT_FIRST__#define__SELECT_FIRST__charSelect_first(char*p,intsize);charSelect_first1(char*p,intsize);char...

    //题目:在字符串中找出第一个只出现一次的字符。

    //如输入“abaccdeff\0”,则输出'b'。

    #ifndef __SELECT_FIRST__

    #define __SELECT_FIRST__

    char Select_first(char *p,int size);

    char Select_first1(char *p, int size);

    char Select_first2(char *p, int size);

    #endif                              //头文件  函数声明

    #include//函数体

    #include

    char Select_first(char arr[],int size)

    {

    int i = 0, j = 0;

    while (arr[i])

    {

    if ((arr[i] != arr[j]&&j

    {

    j++;

    }

    else

    {

    j = 0;

    i++;

    }

    if (j == (size - 1))

    return arr[i];

    }

    return '\0';

    }

    char Select_first1(char *p, int size)

    {

    char ch = '\0';

    char arr[20];

    int i = 1,j=1;

    strcpy(arr, p);

    while (arr[0])

    {

    ch = arr[0];

    i = 1;

    j = 1;

    while (arr[i])

    {

    if (ch == arr[i])

    {

    j++;

    }

    else

    {

    arr[i - j] = arr[i];

    }

    i++;

    }

    if (j == 1)

    return ch;

    arr[i - j] = '\n';

    }

    return '\0';

    }

    char Select_first2(char p[])

    {

    int arr[255] = { 0 };

    char * ptr = NULL;

    ptr = &p[0];

    while (*p)

    {

    arr[*p]++;

    p++;

    }

    while (*ptr)

    {

    if (arr[*ptr] == 1)

    return *ptr;

    ptr++;

    }

    return '\0';

    }

    #include            //主函数

    #include"Select_first.h"

    int main()

    {

    char arr[] = "abbaccdeff";

    char ch=Select_first2(arr,strlen(arr));

    printf("%c\n",ch);

    }

    展开全文
  • C语言-自我学习-遍历数组

    千次阅读 2018-11-20 18:19:18
    那么如果我获取到这个字节数,然后去除去数组的第一个索引的字节数,就得到了数组长度 得到动态长度就可以开始遍历了 在c中,是没有自动换行的方法,所以需要加上\n int arr[3] = {123, 1231, 123}; size_t size =...
  • /*遍历数组相同元素 */ int all_Node_upid[10] = {0, 0, 1, 2, 2, 4, 3, 6, 4, 8}; int i, j,k = 0; int smae_id[10]; int xx; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) {
  • 主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • C语言中删除数组中某个元素的方法发布时间:2020-06-17 14:22:39来源:亿速云阅读:1964作者:...方法1:/*name: c语言 删除数组的某个元素tip:数组元素的增/删/ 改/查(简单遍历就ok)数组增删操作在c语言中没有相...
  • 3.覆盖数组 约瑟夫环 问题引入:约瑟夫环是一个数学应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k人开始报数,数到m那个人出列;他下一个人又从1开始报数,数到m那个人...
  • Javascript中,循环大致分为三种: 1.for循环 2.while循环 3.do while循环。 这三种循环使用同C语言的使用方法基本一致。但在使用上更为灵活方便。 1、for循环。循环结构为 for
  • PHP遍历关联数组的方法介绍

    千次阅读 2014-04-07 23:30:12
    在PHP中数组分为两类: 数字索引数组和关联...其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。 下面介绍PHP中遍历关联数组的三种方法
  • PHP:遍历关联数组的方法介绍

    千次阅读 2015-08-20 13:04:53
    目录(?)[-] foreacheachlist each   ...其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意类型,...下面介绍PHP中遍历关联数组的三种方法: foreach [c-sharp] view plaincopypr
  • C语言 删除数组 某个元素

    万次阅读 多人点赞 2017-08-08 10:24:48
     name: c语言 删除数组的某个元素   tip:  数组元素的增/删/ 该/查(简单遍历就ok)   数组增删操作在c语言中没有相应的函数------我们最好是 自己写个函数保存好   注意代码缩进,对齐  */ #include int ...
  • 指针与一维数组: #include  void test1() {  //利用指针来修改数组元素  int a[2];  int *p;  p = &a[0]; // p = a; 等效  *p = 10;  printf("%d\n",a[0]);... //遍历数组元素  int a

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 354
精华内容 141
关键字:

c语言遍历数组的方法

c语言 订阅