ホームページ  >  記事  >  バックエンド開発  >  PHP配列定義、変数破壊、1次元配列ソート_PHPチュートリアル

PHP配列定義、変数破壊、1次元配列ソート_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:59:361175ブラウズ

この記事では、まず PHP での配列の定義と配列の破棄について紹介し、次に例を使用して 1 次元データのソート方法を説明します。お困りの皆様の参考になれば幸いです。

PHP配列の定義

コードは次のとおりです コードをコピー

……
$array = array('1','two','three');
var_dump($array);

このコード スニペットの最初の行では、1 次元配列 $array が定義されています。 2 行目では、配列をフォーマットして出力します。

コードは次のとおりです コードをコピー

配列(3) {
[0]=>
文字列(3)「1つ」
[1]=>
文字列(3)「2」
[2]=>
文字列(5)「3」
}

それでは、お兄さん、出力結果を説明してください。まず、この配列の出力結果の最初の行です。 array(3) は、これが 3 つの要素を持つ配列であることを示します。 まず、要素No.0は長さ3の文字列(string(3))です...
残りの2つについては紙面の都合で割愛します…、これはどういう意味でしょうか?これは、PHP では、配列の添字を指定しない場合、独自に添字を最初から作成することを示しています。つまり、次の例を見てください。

コードは次のとおりですコードをコピー…… $array = array('one',"hello"=>'two','three'); var_dump($array);...今回は配列を定義する際に、2番目の要素に添字を指定しました(以降、この記事ではキー名と呼びます。添字は少し曖昧です!)。キー名 (こんにちは)、出力を見てみましょう:



コードは次のとおりですコードをコピー配列(3) { [0]=>あなたも私と同じように、最初の要素のキー名が 0 のままであるという非常に賢い現象を見たことがあると思います。これは、私たちが指定していないので理解できます。PHP 配列にはキー名が必要であり、PHP は次のようにします。独自のキー名を最初から作成することが推奨されており、2 番目の要素ではキー名を指定しましたが、PHP は私たちの意見を尊重してこのキー名を使用しました。複雑なのは 3 番目の要素です。 3 番目の要素は非常に単純に見えますが、キー名は指定されていません。PHP はキー名として最大の整数のキー名に 1 を自動的に追加します。しかし、最初の要素のキー名を「-5」に変更し、2 番目の要素のキー名を変更しない場合、結果はどうなるか考えたことはありますか?待ってみましょう:
文字列(3)「1つ」

["こんにちは"]=>
文字列(3)「2」
[1]=>
文字列(5)「3」
}


コードは次のとおりです

コードをコピー $array = array(-5=>'one',"hello"=>'two','three'); var_dump($array); …
……


3 番目の要素のキー名が -4 であるべきだと考えるのであれば、この考えは PHP4.3.0 より前は正しかったが、それ以降は間違っていたと言わせてください。PHP4 以降のバージョンです。 3.0. 次の結果が表示されます:

コードは次のとおりです コードをコピー

配列(3) {
[-5]=>
文字列(3)「1つ」
["こんにちは"]=>
文字列(3)「2」
[0]=>
文字列(5)「3」
}

はい、3 番目の要素は 0 から始まります。つまり、負の数がどれほど小さくても、次の要素が PHP によってキー名を定義するように求められた場合、0 から始まります。この場所の内容を覚えておいてください。既存のキー名の中で最大のものは依然として負の数であり、負の数がどれほど小さくても、PHP は次のキー名を 0 から開始します。

PHP 配列の破棄は、他の変数を破棄するのと同じように簡単です。
配列全体を破棄します: unset($array)
配列内の要素を破棄します: unset($array[-5])

実生活でもプログラミングの世界でも、秩序は常に重要です。秩序のない世界がどのようなものであるか想像できません。 PHP 配列も例外ではありません。 PHP には、PHP 配列をソートするための 4 つの関数セットが用意されています。最初の 3 つは 1 次元配列用で、4 番目の多次元配列については少し複雑です。 。

最初のグループ:sort と rsort、元の配列のインデックス関係を破壊しながら、PHP 配列キー値の順序 asc と逆順 desc に従ってソートします。実際には、から始まる数値インデックスを再構築します。インデックス削除後は0。ルーチンを見てみましょう:


コードは次のとおりです コードをコピー

$a = array("a"=>1,2);
並べ替え($a);
var_dump($a);

rsort($a);
var_dump($a);
?>

最初の出力結果、最初の出力を見てください:
配列(2) {
[0]=>
int(1)
[1]=>
int(2)
}
2 番目の出力:
配列(2) {
[0]=>
int(5)
[1]=>
int(4)
}


最初に定義したインデックス a が存在しないことがわかりました。それはどこにありますか?それはどこへ行くのですか?元のインデックス関係を気にしないのであれば、それらは無慈悲にも削除されたと断言できます。

2 番目の関数セット: asort と arsort。これら 2 つの関数は、配列の元のインデックス関係を保持できる限り、より強力です。上記の例の sort と rsort をこれら 2 つの関数に置き換えて、結果を確認してください。 :

コードは次のとおりです コードをコピー
配列(2) {
["a"]=>
int(1)
[0]=>
int(2)
}
配列(2) {
[0]=>
int(2)
["a"]=>
int(1)
}

这个一看就明白的,不用说了吧!

第三组PHP数组排序函数:krsort 和 ksort 这两个不同于以上两组,这两函数是对键名进行排序的,大家可以把上例的函数替换成这两个,看看具体运行结果,这里也不说了,不然这个文章写的就太长了,怕有些兄弟没有耐心看到本文的重点,虽然重点就在下边!

通过自定义函数对PHP数组进行排序,有三个函数分别是:
uasort 通过自定义函数对PHP数组的键值进行排序,并且保留原来的索引关系。
uksort 通过自定义函数对PHP数组的键名进行排序,并且保留原来的索引关系。
usort通过自定义函数对PHP数组的键值进行排序,并且删除原来的索引关系,从零开始建立新的索引。

这个地方当然需要一个例子:


输出结果:
array(4) {
  [0]=>
  int(1)
  [3]=>
  int(5)
  [1]=>
  int(4)
  [2]=>
  int(3)
}

,呵呵……是不是比不排序还乱呢?我们这里只是演示了使用的方法而已,具体你用到的时候自己搞吧!你要是不对这些数值进行操作之后再比较,例如我们这里:
 $a+=1;
 $b+=3;//改变这些值之后进行比较


在PHP手册中,一共定义了74个数组函数,涵盖了PHP数组的定义,赋值,排序,数值操作,比较,以及对数组的键名,键值反转……等等我们几乎能够想到的所有功能。有需要的同学可以去参考一下啊

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631293.htmlTechArticle本文章先是介绍关于php中的数组定义与数组的销毁,之后再用一个实例来说明一维数据的排序方法,有需要的朋友可以参考一下,希望对大家有...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。