配列:array()

参考リンク:

//初期化
$array = array();

//配列
$array = array('りんご', 'もも', 'なし');

//連想配列
$array = array('apple'=>'りんご', 'peach'=>'もも', 'pear'=>'なし');

//配列の数をカウント
count($array);

//多次元:入子
$array = array('fruits'=>array('a'=>'orange', 'b'=>'banana'), 'numbers'=>array(1, 3, 5));

foreach::配列のループ
//配列の場合 foreach($arrayName as $variableName){}
$array = array("Rose","Lili","Jasmine","Hibiscus","Tulip","Sun Flower","Daffodil","Daisy");
foreach($array as $FlowerName){
    echo("The flower name is $FlowerName. \n");
}

//連想配列の場合::foreach($arrayName as $key => $variableName){}
array = array(
    "Flower1"=>"Rose",
    "Flower2"=>"Lili",
    "Flower3"=>"Jasmine",
    "Flower4"=>"Hibiscus",
    "Flower5"=>"Tulip",
    "Flower6"=>"Sun Flower",
    "Flower7"=>"Daffodil",
    "Flower8"=>"Daisy");
foreach($array as $key=> $FlowerName){
    echo("The $key is $FlowerName. \n");
}

追加:追加したい配列[] = 要素
//配列に値を追加:直接代入したほうが速い!
$array[] = 'バナナ';
$array[] = 'みかん';
//キーを指定して追加
$array['banana'] = 'バナナ';
$array['mikan'] = 'みかん';

//配列に追加
array_push( 要素を追加する配列 , 追加したい要素1 [, 追加したい要素2 ] )

追加 -> 上書き結合:array_merge
//array_merge
array1 = array('color'=>'red', 10=>1, 0=>3);
$array1[] = 100;
結果:print_r($array1)
Array( [color] => red, [10] => 1, [0] => 3, [11] => 100)

$array2 = array('a', 'b', 'color'=>'green', 5);

$array = array_merge($array1, $array2);
結果:print_r($array);
Array ( [color] => green, [0] => 1, [1] => 3, [2] => 100, [3] => a, [4] => b, [5] => 5 )
//keyの重複は上書き、添字は0から振り直し

追加 -> 上書きなしで結合:array_merge_recursive
//array_merge_recursive
$array1 = array('color'=>'red', 10=>1, 0=>3);
$array1[] = 100;
$array2 = array('a', 'b', 'color'=>'green', 5);
$array = array_merge_recursive($array1, $array2);

Array(
[color] => Array([0] => red,[1] => green),
[0] => 1,
[1] => 3,
[2] => 100,
[3] => a,
[4] => b,
[5] => 5,
)
//keyの重複は追加、添字は0から振り直し


array_values():配列 array から全ての値を取り出し、数値添字をつけた配列を返す。

$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
出力
Array(
    [0] => XL
    [1] => gold
)

explode():文字列を文字列により分割する

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

array_intersect():配列の共通項を計算する

$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);

Array(
[a] => green
[0] => red
)

Movabeltypeで実装
//キーワードに一致する記事をフィルタ
if($key != null && $filter != null ) {
  ${$aries} = array_values(array_filter(${$aries},function(${$ary}){  //たとえば、$entries を以下でフィルタリング
    $keyarr = explode(',', ${$ary}[$key]);  // たとえば、$entry['keywords']をカンマ区切りで区切って配列化
    return array_intersect($keyarr, $fiter); // たとえば、$entry['keywords']に含まれるもの返す
  }));
}

//関数:配列をforeachで回す。
//foreach内で、テンプレートファイルを includeすることで項目用変数を当てはめて表示。
//PHPの変数スコープの制約は、includeで回避・分散管理。変数の汚染もふせぐ。

//テンプレ
$linktpl = $_SERVER['DOCUMENT_ROOT'] .'parts/tpl_linkcards.php';
//配列リスト
$linklst = $_SERVER['DOCUMENT_ROOT'] .'parts/entry_list.php';
//出力関数( 例:keywordsが1のもの )
arrylist_out($linklst,'entries',$linktpl,$out='all','keywords','1');