多くの場合、必要なのは 1 次元配列だけであり、1 次元配列の方が使いやすいため、多次元配列を 1 次元配列に変換する必要があります。 PHPの一次元配列?多次元配列を 1 次元配列に変換する 3 つの例を見てみましょう:
1. foreach を使用します
コードをコピーします コードは次のとおりです:
関数 arr_foreach ($arr)
{
static $tmp=array();
if (!is_array ($arr))
{
return false;
}
foreach ($arr as $val )
{
if (is_array ($ val) )
($val); $a = array(1,2=>array(3,4=>); ;array(5,6)),7);
print_r(arr_foreach($a));
?>
2. for ループを使用すると、数値の添え字を持つ配列のみを走査できます
コードをコピー
コードは次のとおりです:
function arr_foreach($arr)
{ static $tmp=array();
for($i=0; $i { i]; $tmp を返します。 }
//呼び出し例
$a = array(1,array(3,array(5,6)),7);
print_r(arr_foreach($a));
?>
3. while
を使用してコピーしますコード
コードは次のとおりです:
/**
* 多次元配列を 1 次元配列に変換します
* @author echo
* @link http://www.jb51.net/
* @param array $arr
* @return array
*/
function ArrMd2Ud($arr) { #値の最初の要素をアドレス割り当てのコンテナとして使用します。
$ar_room = &$arr[key($arr)];
#最初のコンテナは配列ではありません if (!is_array($ar_room)) {
#配列に変換します
$ar_room = array($ar_room) ); } #ポインタを下に移動します next($arr); #Traverse
while (list($k, $v) = each($arr)) {
#配列の場合は再帰的に掘ります、そうでない場合は、配列に転送します
$v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
#再帰マージ
$ar_room = array_merge_recursive($ar_room, $v);
#現在の添え字要素の配列を解放します
unset($arr[$k]);
}
return $ar_room;
}
呼び出し例:
コードをコピー
コードは次のとおりです:
$arr = array(1, 2, 3 => array(1, 2, 'ar' => array(1, 2 => ; array('a', 'b'))), array('ar' => array(3, 4)));
print_r(ArrMd2Ud($arr));
出力:
コードをコピー
コードは次のとおりです:
Array( [0] => 1 [1] => 2 [2] => 1
[3] => 2
[4] => 1
[5] => a
[6] => 3
[8] =>
http://www.bkjia.com/PHPjc/741257.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/741257.html技術記事多くの場合、必要なのは 1 次元配列だけであり、1 次元配列の方が使いやすいため、多次元配列を 1 次元配列に変換する必要があります。 PHP で多次元配列を 1 次元の数値に変換する方法。 ...