ホームページ  >  記事  >  バックエンド開発  >  PHP 基本チュートリアル 8 つの配列

PHP 基本チュートリアル 8 つの配列

黄舟
黄舟オリジナル
2017-03-01 09:48:501421ブラウズ

このセクションで説明します

  • 配列の概要

  • 配列の作成

  • 配列の動的拡張

  • 配列の走査

  • 配列の関連関数

  • 配列演算子

序文

先ほど学んだことは、変数と定数は個別のデータであり、場合によってはそのような必要性があり、同じ型のいくつかの値や無関係な値を組み合わせる必要があるということです。合理的に保管され、使用時には一定のルールに従ってデータを持ち出すことができます。現時点では、前の変数では要件を満たすことができないため、ここでは配列が使用されます。

配列の概要

PHP の配列は他の言語の配列とは異なります。これは、PHP 言語の構文の緩さによっても引き起こされます。違いは何ですか?

いわゆる配列は、同じデータ型または異なるデータ型の要素を特定の順序で並べたもので、限られた数の変数に 1 つの名前を付け、それらを区別するために番号を使用する変数の集合です。 . この名前を配列名といい、数字を添字といいます。配列を構成する個々の変数は、配列のコンポーネントと呼ばれ、配列の要素とも呼ばれ、添え字変数と呼ばれることもあります。

配列の定義の一般的な理解は、データのコレクションを保存することです。

<?php

    //定义一个数组,里面存放的数据类型可以任意类型
    $arr = array(12,true,false,&#39;abcd&#39;,12.2);
    print_r($arr);//输出数组。
.....结果......
Array ( [0] => 12 [1] => 1 [2] => [3] => abcd [4] => 12.2 )

さまざまなデータ型が配列に保存され、出力時にそれらを出力できることがわかります。そして、出力するときに、それぞれの値に対応する添字が付いていることがわかります。この添字はキーと呼ばれ、特定の値を取得したい場合は、キーで取得できます。

$a = 数组名[键名]
echo $arr[0];
.....结果......
12

配列のキー値が数値の場合、添字は0から計算されます。

それでは、配列はどのように作成されるのでしょうか?

配列を作成する 3 つの方法

  • インデックス付き配列 (添字は数値) PHP で配列を定義するには 3 つの方法があります。

  • 連想配列(添字は文字列)

  • 配列の添字は両方を持ちます。

最初のもの

<?php

    //定义数组,数值用逗号隔开。
    $arr = array(1,2,3,4,&#39;abcd&#39;,true);
    print_r($arr);
.....结果......
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => abcd [5] => 1 )

は、array() 言語構造を使用して新しい配列を作成します。出力から、添字が数値であることがわかります。データは数値の添え字によっても取得されます。これはインデックス配列です。

2番目の

<?php

    //关联数组,自己定义下标,用=>来定义键和值
    $arr = array(&#39;a&#39; => 1,&#39;b&#39; => 2,&#39;c&#39; => &#39;abcde&#39;, &#39;d&#39; => true);
    print_r($arr);
.....结果......
Array ( [a] => 1 [b] => 2 [c] => abcde [d] => 1 )

このメソッドもarray()構文構造を使用して定義されていますが、配列の添字は自分で定義します。ここでは、独自の状況に応じて添字を定義できます。キー値の定義に関しては、キーには次のような強制変換が行われ、正当な整数値が含まれる文字列は整数に変換されることに注意してください。たとえば、キー名「8」は実際には 8 として保存されます。ただし、「08」は有効な 10 進数値ではないため、キャストされません。

  1. 浮動小数点数も整数に変換されます。つまり、小数部分は切り捨てられます。たとえば、キー名 8.7 は、実際には 8 として保存されます。

  2. ブール値も整数に変換されます。つまり、キー名 true は実際には 1 として格納され、キー名 false は 0 として格納されます。

  3. Null は空の文字列に変換されます。つまり、キー名 null は実際には "" として格納されます。

  4. 配列やオブジェクトをキー名として使用することはできません。これを強制的に実行すると、「オフセット タイプが不正です」という警告が表示されます。

  5. 複数のユニットが配列定義で同じキー名を使用している場合、最後のものだけが使用され、前のものは上書きされます。

  6. 連想配列の値を取得するには、独自に定義したキーを使用する必要があります。

3 番目のタイプ

<?php

    $arr[0] = 1;
    $arr[2] = 2;
    $arr[&#39;a&#39;] = 12;
    $arr[4] = 45;

    print_r($arr); 
.....结果......
Array ( [0] => 1 [2] => 2 [a] => 12 [4] => 45 )

3 番目の配列の定義は、角括弧を使用して直接定義できます。システムはデフォルトでこれを配列であると認識して作成します。添え字には数字または文字列を使用できます。ただし、複数のユニットが配列定義で同じキー名を使用する場合は、最後のユニットのみが使用され、前のユニットは上書きされます。

配列の動的増加

PHP の配列の長さは固定されておらず、データの入力が完了しても、データを入力することができ、それに応じて配列の長さも増加します。ダイナミックな成長。
<?php

    for($i = 0; $i < 10; $i++){
        $arr[] = $i;
    }
    print_r($arr);
......结果.......
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
上記のコードは for ループを使用し、配列の 3 番目の定義メソッドを使用して値を割り当てていますが、配列の角括弧内に添字を記述していないことがわかりますが、プログラムはこれは、配列が動的に増加するためです。キー値が指定されていない場合、PHP は、以前に使用された最大の整数キーに 1 を加えたものを新しいキーとして自動的に使用します。したがって、出力では添字が 0 から自動的に増加することがわかります。

配列トラバーサル

以前に配列の作成と基本的な使用方法を紹介しましたが、配列からすべての値を抽出するにはどうすればよいでしょうか? PHP では、ループ制御フローを使用して配列内の値を取得し、配列をループして内部の値を 1 つずつ取得できます。

for

for を使用して、配列の走査中に配列内の値を取得できます。

<?php

    $arr = array(1,9,4,2,8,10,5);
    $sum = count($arr);
    for($i = 0; $i < $sum; $i++){
        echo $arr[$i] . &#39;  &#39;;
    }
.....结果......
1 9 4 2 8 10 5

上面的count()这个系统函数是统计一个数组里的所有元素,或者一个对象里的东西。从而的到数组的大小,也就是长度。然后通过for循环,把$i当做数组的下标($i从0开始)。

foreach

在上面的代码中如果我们的数组是关联数组,也就是数组的下标是一个字符串,那么上面的代码是不可能取出来。所以我们可以使用PHP提供的另外一种循环方法:foreach()。它的语法有两种:

foreach(数组名 as $key => $value){

}

foreach(数组名 as $value){

}

其中“as”是一个关键字,不能变。

foreach里面有可以有三个参数,第一个参数是数组的名字,第二个参数

value是用来存储从数组中取出来的值。当然键和值得名字可以根据自己的情况自己取。

当里面的参数是两个的时候,$value只用来存放从数组中取出来的值,而没有键。

<?php

    $arr = array(1,9,4,2,8,10,5);

    foreach ($arr as $key => $value) {
        echo $key . &#39;=>&#39; . $value . &#39;  &#39;;
    }

    echo &#39;<br>&#39;;

    foreach ($arr as $value) {
        echo $value . &#39;  &#39;;
    }
.....结果......
0=>1 1=>9 2=>4 3=>2 4=>8 5=>10 6=>5 
1 9 4 2 8 10 5

在第二个循环中没有键的输出。

上面的两种循环结构,就是我们常用到的数组遍历的方法,其中第二个方法,也就是用foreach的方法,我们会经常用到,因为这种方法对于所有的数组都适用,而不用考虑下标的问题。

数组的相关函数

  • count($array) 统计一个数组里的所有元素,或者一个对象里的东西。从而的到数组的大小,也就是长度。然后通过for循环,把

    i从0开始)。

  • is_array($arr) 判断变量是否是一个数组。传一个变量进去,如果这个变量是一个数组,则返回true,否则则返回false;

  • array_search (value) 在数组中搜索给定的值,如果成功则返回相应的键名 。当我们想知道一个数组中有没有一个数,可以使用这个函数,如果数组中有你想找的值,则返回这个值对应的键值。

  • array_reverse($arr),传进去一个数组,返回一个与这个数组相反的数组。

    <?php
    
    $arr = array(1,9,4,2,8,10,5);
    
    $array = array_reverse($arr);
    
    print_r($array);
    .....结果......
    Array ( [0] => 5 [1] => 10 [2] => 8 [3] => 2 [4] => 4 [5] => 9 [6] => 1 )
  • array_merge($arr1,$arr2),传进去两个数组,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

  • unset($value) 传进去的变量可以销毁一个数组,也可以销毁数组中的一个值,当通过数组[下标]的方式传入是,会销毁数组中的这个值,但是当传进去的数组时,会把整个数组进行销毁。

  • sort() 本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。当数组中值都是数字的时候,可以使用这个函数进行排序,不过排序的结果是数字按照从小到大的顺序。

    <?php
    
        $arr = array(1,9,4,2,8,10,5);
    
        sort($arr);
    
        print_r($arr);
    .....结果.....
    Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 8 [5] => 9 [6] => 10 )
  • usort($array,func_name) 传进去一个数组,和一个自己写的方法名。使用用户自定义的比较函数对数组中的值进行排序,在上面的一个方法,你只能得到从小到大的顺序,但是我们的要求是从大到小,这就会用到这个函数,第二个参数是我们写的排序规则的函数。

    <?php
    
    $arr = array(1,9,4,2,8,10,5);
    
    function mysort($a,$b){ //写自己的函数,使数组按照从大到小的顺序进行排序。
    if($a == $b){
        return 0;
    }
    
        return $a < $b ? 1 : -1;
    }
    
    usort($arr, &#39;mysort&#39;);
    
    print_r($arr);
    ......结果......
    Array ( [0] => 10 [1] => 9 [2] => 8 [3] => 5 [4] => 4 [5] => 2 [6] => 1 )

    这里使用到可变函数。

数组的运算符

我们在运算符那一节并没有讲到数组的运算符,其实数组也是有运算符的。

  • $a + $b 联合 $a 和 $b 的联合。运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。

  • $a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE 。

  • $a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE 。

  • $a != $b 不等 如果 $a 不等于 $b 则为 TRUE 。

  • $a a8093152e673feb7aba1828c43532094 $b 不等 如果 $a 不等于 $b 则为 TRUE 。

  • $a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE 。  
    在这里看来数组的运算符也是很好理解的。

总结

数组讲到这里,算是基本讲完了,数组在我们的开发中是经常用到的,不止上面的以为数组,有时候数组里面还可能是一个数组,只要数组的结构在脑海中有清晰的认识,不管有几个数组,都是可以解决的,同时数组的出现也引出了一些关于数组的算法。

 以上就是PHP基础教程八之数组的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。