1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/* ----------------------------------------------------------------------------
* 配列関連の関数:配列の要素編集:配列要素の編集の例
* 「array_unique,array_fill,array_fill_keys,array_count_values,
* array_change_key_case,array_walk,array_reduce,array_pad,array_filter」
* 作成: 2015.08.15 yoshi of CXMedia Inc.
* --------------------------------------------------------------------------- */
header("Content-type:text/plain; charset=UTF-8");
// array()
$ary1 = array('a','fruit'=> 'apple','lemon','a');
$ary2 = array(8,5,3,9,6,2,7,1,10,4);
$ary3 = array(
'add' => $ary1,
'base'=> 'レシピ'
);
$aryFruits = array(
'cherry' => 'チェリー',
'melon' => 'メロン',
'apple' => 'りんご',
'lemon' => 'レモン',
'banana' => 'バナナ',
'orange' => 'オレンジ'
);
// array_unique(array,sort_flags);
// 引数:入力配列、ソートフラッグ
/** [sort_flags]
* SORT_REGULAR : 通常の比較 (型変換をしない)
* SORT_NUMERIC : 数値として比較
* SORT_STRING : 文字列として比較(デフォルト値)
* SORT_LOCALE_STRING : 現在のロケールにもとづいて文字列として比較
*/
echo '■配列の重複値を削除:$aryOut=array_unique(array [,sort_flags])',"\n";
$aryOut = array_unique($ary1);
print_r($aryOut);
// array_fill(start_index,num,value);
// 引数:返される配列の最初のインデックス、挿入する要素数、要素に使用する値
echo '■配列を指定した値で埋める:$aryOut=array_fill(start_index,num,value);',"\n";
$aryOut = array_fill(2, 4, 'リンゴ');
print_r($aryOut);
// array_fill_keys(array,value);
// 引数:キーとして使用する値の配列、埋めたい値(PHP5.2以降)
echo '■配列キーを指定した値で埋める:$aryOut=array_fill(array,value);',"\n";
$aryKey = array_keys($aryFruits);
$aryOut = array_fill_keys($aryKey, 'リンゴ');
print_r($aryOut);
// array_count_values(array);
echo '■配列値の出現回数配列:$aryOut=array_count_values(array)',"\n";
$aryOut = array_count_values($ary1);
print_r($aryOut);
// array_change_key_case(array,case);
// [case]:CASE_UPPER又はCASE_LOWER (デフォルト)。
echo '■配列キーの大小文字変換:$aryOut=array_change_key_case(array [,case])',"\n";
$aryOut = array_change_key_case($ary1,CASE_UPPER);
print_r($aryOut);
// array_walk(array,callback,userdata);
echo '■配列にユーザー定義の関数適用:array_walk(array, callback [,userdata])',"\n";
$aryOut = $ary1;
array_walk($aryOut,'edit','web');
print_r($aryOut);
//参照渡しの「&」で元データに対し、ユーザ関数内の編集結果を設定している
function edit(&$value,$key,$prefix){
$value = "$prefix.$key.$value";
}
// array_walk_recursive(array,callback,userdata);
echo '■配列にユーザー定義の関数再帰的適用:array_walk_recursive(array, callback [,userdata])',"\n";
$aryOut = $ary3;
array_walk_recursive($aryOut,'edit','web');
print_r($aryOut);
// array_reduce(array,user_func,initial_value)
echo '■配列減少:$int=array_reduce(array,user_func,initial_value)',"\n";
$intSum = array_reduce($ary2,"call_func",10);
// 前回の反復処理の結果と現在の反復処理の値を引数で渡す
function call_func($carry, $item) { return $carry+$item; }
echo "reduce結果の値は、",$intSum,"\n";
// array_pad(array,size,value)
echo '■配列の指定数の埋め:$aryOut=array_pad(array,size,value)',"\n";
$aryOut = array_pad($ary2,12,'null');
print_r($aryOut);
// array_filter(array,user_func)
echo '■配列のフィルタ:$aryOut=array_filter(array,user_func)',"\n";
$aryOut = array_filter($ary2,"odd");
print_r($aryOut);
// ユーザ定義関数:ビット処理で奇数:1、偶数:0を返す
function odd($str){ return($str & 1); }
?>