[配列の操作あれこれ(要素の連結、個数、キー、コールバック)]

---------------------------実行結果-----------------------
◆implode()値の連結$array2=果実,野菜,飲物,菓子
◆join()値の連結$array3=ねずみ,うし,とら,うさぎ,たつ,へび,うま,ひつじ,さる,とり,いぬ,しし
◆count()要素の数$array3=12
◆array_count_values()同じ要素の個数$array4→$count2
$count2[桃]=3
$count2[梅]=3
$count2[梨]=2
$count2[瓜]=1
$count2[蜜柑]=1
$count2[林檎]=2
◆isset()特定キーの確認=TRUE
◆in_array()特定値の確認=FALSE
◆array_search()要素(値)を検索したキー値=6
◆array_unique()同じ値を持つ要素の削除$array4→$array_del
同じ値の削除$array_del[0]=桃
同じ値の削除$array_del[1]=梅
同じ値の削除$array_del[2]=梨
同じ値の削除$array_del[4]=瓜
同じ値の削除$array_del[5]=蜜柑
同じ値の削除$array_del[6]=林檎
◆array_flip()キーと値を反転$array1→$array_fp
キーと値を反転$array_fp[れい]=0
キーと値を反転$array_fp[ふたつ]=2
キーと値を反転$array_fp[さん]=3
キーと値を反転$array_fp[いつつ]=5
キーと値を反転$array_fp[ななつ]=7
キーと値を反転$array_fp[はち]=8
◆array_values()配列の値のみ配列へ$array2→$array_vl
値のみ配列へ$array_fp[0]=果実
値のみ配列へ$array_fp[1]=野菜
値のみ配列へ$array_fp[2]=飲物
値のみ配列へ$array_fp[3]=菓子
◆array_keys()配列のキーのみ配列へ$array2→$array_ky
キーのみを配列へ$array_ky[0]=りんご
キーのみを配列へ$array_ky[1]=トマト
キーのみを配列へ$array_ky[2]=お茶
キーのみを配列へ$array_ky[3]=ケーキ
◆array_filter()条件に合う値の取得$array4→$array_ft
条件に合う値$array_ft[0]=桃
条件に合う値$array_ft[1]=梅
条件に合う値$array_ft[2]=梨
条件に合う値$array_ft[3]=梅
条件に合う値$array_ft[4]=瓜
条件に合う値$array_ft[5]=蜜柑
条件に合う値$array_ft[6]=林檎
条件に合う値$array_ft[7]=桃
条件に合う値$array_ft[8]=林檎
条件に合う値$array_ft[9]=梨
条件に合う値$array_ft[10]=梅
条件に合う値$array_ft[11]=桃
◆array_map()各要素に特定処理$array4→$array_mp
各要素に特定処理$array_mp[0]=桃
各要素に特定処理$array_mp[1]=梅
各要素に特定処理$array_mp[2]=梨
各要素に特定処理$array_mp[3]=梅
各要素に特定処理$array_mp[4]=瓜
各要素に特定処理$array_mp[5]=蜜柑
各要素に特定処理$array_mp[6]=林檎
各要素に特定処理$array_mp[7]=桃
各要素に特定処理$array_mp[8]=林檎
各要素に特定処理$array_mp[9]=梨
各要素に特定処理$array_mp[10]=梅
各要素に特定処理$array_mp[11]=桃
◆array_reduce()各要素に連続した特定処理$array4→$scalar_rd
◆array_reduce()連続した特定処理結果$scalar_rd=値の連結→:桃:梅:梨:梅:瓜:蜜柑:林檎:桃:林檎:梨:梅:桃
◆array_walk()各キーと値に特定処理$array5
各キーと値に特定処理$array5[0]=10
各キーと値に特定処理$array5[1]=10
各キーと値に特定処理$array5[2]=10
各キーと値に特定処理$array5[3]=10
各キーと値に特定処理$array5[4]=10
各キーと値に特定処理$array5[5]=10
各キーと値に特定処理$array5[6]=10
各キーと値に特定処理$array5[7]=10
各キーと値に特定処理$array5[8]=10

---------------------------スクリプト---------------------
$array1 = array(0=>'れい',2=>'ふたつ',3=>'さん',5=>'いつつ',7=>'ななつ',8=>'はち'); // テスト用配列
$array2 = array('りんご'=>'果実','トマト'=>'野菜','お茶'=>'飲物','ケーキ'=>'菓子'); // テスト用配列
$array3 = array('ねずみ','うし','とら','うさぎ','たつ','へび','うま','ひつじ','さる','とり','いぬ','しし'); // テスト用配列
$array4 = array('桃','梅','梨','梅','瓜','蜜柑','林檎','桃','林檎','梨','梅','桃'); // テスト用配列
$array5 = array('10','20','30','40','50','60','70','80','90'); // テスト用配列
$array6 = array('100','200','300','400','500','600','700','800','900'); // テスト用配列
$joint1 = implode(',',$array2); // 値を連結して文字列化
$joint2 = join(',',$array3); // 値を連結して文字列化
echo '◆implode()値の連結$array2='.$joint1.'';
echo '◆join()値の連結$array3='.$joint2.'';
$count1 = count($array3); // 要素の数
echo '◆count()要素の数$array3='.$count1.'';
echo '◆array_count_values()同じ要素の個数$array4→$count2';
$count2 = array_count_values($array4); // 同じ要素の個数を配列へ
foreach($count2 as $key => $value){
echo '$count2['.$key.']='.$value.'';
}
// 特定キーの確認(あるかどうか)
isset($array2['トマト']) ? print('◆isset()特定キーの確認=TRUE') : print('◆isset()特定キーの確認=FALSE');
// 特定値の確認(あるかどうか)
in_array('惣菜',$array2) ? print('◆in_array()特定値の確認=TRUE') : print('◆in_array()特定値の確認=FALSE');
// 要素(値)の検索…在ればキーの値を返す
in_array('うま',$array3) ? $key_val = array_search('うま',$array3) : $key_val = '◆うま=存在しない!';
echo '◆array_search()要素(値)を検索したキー値='.$key_val.'';
echo '◆array_unique()同じ値を持つ要素の削除$array4→$array_del';
$array_del = array_unique($array4); // 同じ値を持つ要素の削除
foreach($array_del as $key1 => $value1){
echo '同じ値の削除$array_del['.$key1.']='.$value1.'';
}
echo '◆array_flip()キーと値を反転$array1→$array_fp';
$array_fp = array_flip($array1); // キーと値を反転
foreach($array_fp as $key2 => $value2){
echo 'キーと値を反転$array_fp['.$key2.']='.$value2.'';
}
echo '◆array_values()配列の値のみ配列へ$array2→$array_vl';
$array_vl = array_values($array2); // 配列の値のみ配列へ
foreach($array_vl as $key3 => $value3){
echo '値のみ配列へ$array_fp['.$key3.']='.$value3.'';
}
echo '◆array_keys()配列のキーのみ配列へ$array2→$array_ky';
$array_ky = array_keys($array2); // 配列のキーのみ配列へ
foreach($array_ky as $key4 => $value4){
echo 'キーのみを配列へ$array_ky['.$key4.']='.$value4.'';
}
echo '◆array_filter()条件に合う値の取得$array4→$array_ft';
$array_ft = array_filter($array4,'get_value'); // 条件に合う値の取得(コールバック関数get_value)
function get_value($val){
if(mb_strlen($val) > 1){
return TRUE; // 文字数が2以上
}
return FALSE;
}
foreach($array_ft as $key5 => $value5){
echo '条件に合う値$array_ft['.$key5.']='.$value5.'';
}
echo '◆array_map()各要素に特定処理$array4→$array_mp';
$array_mp = array_map('reg_value',$array4); // 各要素に特定処理(コールバック関数reg_value)
function reg_value($reg){
if(mb_strlen($reg) < 2){
return $reg.'(^.^)'; // ひと文字の場合のみ顔文字を追加
}
return $reg;
}
foreach($array_mp as $key6 => $value6){
echo '各要素に特定処理$array_mp['.$key6.']='.$value6.'';
}
echo '◆array_reduce()各要素に連続した特定処理$array4→$scalar_rd';
$scalar_rd = array_reduce($array4,'rdc_value','値の連結→'); // 各要素に連続した特定処理(コールバック関数rdc_value)
function rdc_value($rdc,$now){
$rdc .= ':'.$now; // 文字列の連結(コールバックの度に前回の計算値が引継がれる)
return $rdc;
}
echo '◆array_reduce()連続した特定処理結果$scalar_rd='.$scalar_rd.'';
echo '◆array_walk()各キーと値に特定処理$array5';
function wak_value(&$value,$key,&$usrdata){
$a = $key+1;
$value = $value/$a; // 全て同じ値にする
$usrdata[$key]=$value;
}
$scalar_rd = array_walk($array5,'wak_value',$usrdata); // 各キーと値に特定処理(コールバック関数wak_value)
foreach($array5 as $key8 => $value8){
echo '各キーと値に特定処理$array5['.$key8.']='.$value8.''; }
----------------------------------------------------------