HOME>WEBプログラム覚書>PHP Array関数いろいろ

PHP Array関数いろいろ

PHPには配列を操作する関数がたくさんあるのでちょっとずつ試していこうかとおもいます。

はじめてのperlを読んでて perlでは配列の最後を取り出すのに

Perl

  1. @rray = (a b c);
  2. print @rray[-1];
  3.  

とすればいいらしい。 PHPでもできるかなと思ったけどできなかった。

PHPの場合は

PHP

  1. <?php
  2. $a = array("a", "b", "c");
  3. echo end($a);
  4. ?>

となる。つい最近までend()使ってなかったですね。 ずっと

PHP

  1. <?php
  2. $a = array("a", "b", "c");
  3. echo $a[count($a) - 1];
  4. ?>

という風にやってました。恥ずかしい。

参照サイト

8割使ったことない感じ。実は便利な関数あるかもなのでちょっとずつ試していきます。

array_change_key_case ( array $input [, int $case= CASE_LOWER ] )

$input のすべてのキーを小文字あるいは大文字にした配列を返します。 数値添字はそのままとなります。

ハッシュに対して利用する。

$case
CASE_UPPER or CASE_LOWER (デフォルト)

PHP

  1. <?php
  2. $a = array("Zero" => 0, "One" => 1, "two" => 2);
  3.  
  4. var_dump(array_change_key_case($a));
  5.  
  6. echo "<hr />";
  7.  
  8. var_dump(array_change_key_case($a, CASE_UPPER));
  9.  
  10. echo "<hr />";
  11.  
  12. $b = array("test" => "php", "Test" => "Php", "TEST" => "PHP");
  13.  
  14. var_dump(array_change_key_case($b));
  15. ?>

実行結果

array(3) { ["zero"]=> int(0) ["one"]=> int(1) ["two"]=> int(2) }
array(3) { ["ZERO"]=> int(0) ["ONE"]=> int(1) ["TWO"]=> int(2) }
array(1) { ["test"]=> string(3) "PHP" }

処理の結果keyが同じものはより後ろの値が上書きされる。 んーこれはあまり使いそうもなさそう。

array_chunk ( array $input , int $size [, bool $preserve_keys= false ] )

配列を、size 個ずつの要素に分割します。 最後の部分の要素数は size より小さくなることもあります。

$preserve_keys Boolean
trueが指定されるとキー/indexを保持する。

サンプルのまんま。

PHP

  1. <?php
  2. $a = array("a", "b", "c", "d", "e");
  3. $b = array("Zero" => 0, "One" => 1, "two" => 2, "three" => 3, "four" => 4);
  4.  
  5. var_dump(array_chunk($a, 2));
  6. echo "<hr />";
  7. var_dump(array_chunk($a, 2, true));
  8. echo "<hr />";
  9. var_dump(array_chunk($b, 2));
  10. echo "<hr />";
  11. var_dump(array_chunk($b, 2, true));
  12. ?>

実行結果

 0, "One" => 1, "two" => 2, "three" => 3, "four" => 4);

print_r(array_chunk($a, 2));
echo "
"; print_r(array_chunk($a, 2, true)); echo "
"; print_r(array_chunk($b, 2)); echo "
"; print_r(array_chunk($b, 2, true)); ?>

ハッシュの場合、trueを指定しないとkeyが失われる。 これもうまい使いどころが思い浮かばない。tableとかHTMLと絡ませて出力する時、使えるかも?

array_combine ( array $keys , array $values )

keys 配列の値をキーとして、また values 配列の値を対応する値として生成した配列を作成します。

$keysと$valuesの要素数は同じでなければならない。

PHP

  1. <?php
  2. /* サンプル */
  3. $a = array("green", "red", "yellow");
  4. $b = array("avocado", "apple", "banana");
  5. $c = array_combine($a, $b);
  6. print_r($c);
  7.  
  8. echo "<hr />";
  9.  
  10. /* Stringと配列 */
  11. $a = array("green", "red", "yellow");
  12. $b = array($a, $a, $a);
  13. $c = array_combine($a, $b);
  14. print_r($c);
  15.  
  16. echo "<hr />";
  17.  
  18. /* 配列とString */
  19. $a = array("green", "red", "yellow");
  20.  
  21. $a = array($a, $a, $a);
  22. $b = array("avocado", "apple", "banana");
  23. $c = array_combine($a, $b);
  24. print_r($c);
  25.  
  26. echo "<hr />";
  27.  
  28. /* 配列と配列 */
  29. $a = array("green", "red", "yellow");
  30. $b = array("avocado", "apple", "banana");
  31.  
  32. $a = array($a, $a, $a);
  33. $b = array($b, $b, $b);
  34.  
  35. $c = array_combine($a, $b);
  36. print_r($c);
  37. ?>

実行結果

    Array
(
    [green] => avocado
    [red] => apple
    [yellow] => banana
)

Array ( [green] => Array ( [0] => green [1] => red [2] => yellow ) [red] => Array ( [0] => green [1] => red [2] => yellow ) [yellow] => Array ( [0] => green [1] => red [2] => yellow ) )

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 275

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 275

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 275
Array ( [Array] => banana )

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 287

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 287

Notice: Array to string conversion in /home/users/1/lolipop.jp-dp07173486/web/_/themes/default/views/pg/2009/04/php_array.php on line 287
Array ( [Array] => Array ( [0] => avocado [1] => apple [2] => banana ) )

$keyの要素がArrayの場合、添字はArrayとなる。

下記のようなコードは書いたことある気がする。 これは使うことあるかも。

PHP

  1. <?php
  2. $a = array("green", "red", "yellow");
  3. $b = array("avocado", "apple", "banana");
  4. $c;
  5.  
  6. if (count($a) == count($b)) {
  7.     for ($i=0; $i<count($a); $i++) {
  8.         $c[$a[i]] = $b[$i];
  9.     }
  10.     return $c;
  11. } else {
  12.     $c = false;
  13. }
  14. ?>

array_count_values ( array $input )

配列 input の値をキーとし、 input におけるその値の出現回数を値とした配列を返します。

string あるいは integer 以外の型の要素が登場するたびに E_WARNING が発生します。

PHP

  1. <?php
  2. $a = array(1, "hello", 1, "world", "hello");
  3. print_r(array_count_values($a));
  4.  
  5. echo "<hr />";
  6.  
  7. $b = array("Zero" => 0, "One" => 0, "two" => "test", "three" => "test", "four" => "hoge");
  8. print_r(array_count_values($b));
  9. ?>

実行結果

";

$b = array("Zero" => 0, "One" => 0, "two" => "test", "three" => "test", "four" => "hoge");
print_r(array_count_values($b));
?>

値に対しての処理なのでハッシュでもOK。 これは重複チェックに使えるのか。

まだまだ先は長い・・・

投稿日 2009年4月17日 22:21
カテゴリ PHP
タグ テストコード | 関数
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1164

コメント

コメントする
Name
Email Address
URL