配列の値をGETパラメータとしてURLの一覧を作成する関数(PHP)
2018年4月4日
PHPで、配列の値をGETパラメータとしてURLの一覧を作成する関数を作成してみました。
function list_urls($url, $arr, $parent_val="") {
if (empty($arr)) return;
$key = key(array_slice($arr, 0, 1));
$vals = $arr[$key];
unset($arr[$key]);
echo "<div><ul>";
foreach($vals as $idx => $val){
if (is_array($val)) {
if ($idx == $parent_val) {
$sub_arr = array( $key => $val);
foreach($arr as $k => $a){
$sub_arr[$k] = $a;
}
list_urls($url, $sub_arr, $idx);
}
} else {
$url_new = set_url_param($url, $key , $val);
echo "<li>";
echo "<a href='" . $url_new . "' target='_blank'>" . $url_new . "</a>";
list_urls($url_new, $arr, $val);
echo "</li>";
}
}
echo "</ul></div>";
}
function set_url_param($url, $key , $val){
if (strpos($url,'?') === false) {
$url .= "?";
} else {
$url .= "&";
}
return $url . $key . "=" . $val;
}
$arr = array();
$arr["p1"] = array(
'1111','2222','3333'
);
$arr["p2"] = array(
'AAAA','BBBB','CCCC'
);
$arr["p3"] = array(
'AAAA' => array('AAA1','AAA2'),
'BBBB' => array('BBB1','BBB2'),
'CCCC' => array('CCC1','CCC2')
);
$arr["p4"] = array(
'AAA2' => array('AA11','AA22'),
'BBB2' => array('BB11','BB22'),
'CCC2' => array('CC11','CC22')
);
$arr["p5"] = array(
'AA22' => array('A111','A222'),
'BB22' => array('B111','B222'),
'CC22' => array('C111','C222')
);
$url = "http://localhost/aaa";
list_urls($url, $arr);