ホームページ  >  記事  >  バックエンド開発  >  PHP配列をインデックス配列に変換する方法

PHP配列をインデックス配列に変換する方法

PHPz
PHPzオリジナル
2023-04-26 14:19:13615ブラウズ

PHP プログラミングにおいて、配列は非常に重要なデータ型であり、データの保存、処理、操作を容易にします。その中でもインデックス配列は最もよく使われる配列型の 1 つで、数値または文字列値に対応するキー名として数値を使用します。ここでは、インデックス付き配列で順列を実行する方法について説明します。

1. 配列のソート方法

PHP では、sort() 関数を使用してインデックス配列を昇順にソートし、rsort() 関数を使用してインデックス配列を降順にソートできます。

//升序排列 
$numbers = array(3, 1, 5, 2, 4); 
sort($numbers); 
print_r($numbers); 

//降序排列 
$numbers = array(3, 1, 5, 2, 4);  
rsort($numbers);  
print_r($numbers);

出力結果は次のとおりです:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )

2. 配列の転置方法

配列の転置とは、多次元配列の行と列を交換することを指します。新しい配列を生成します。たとえば、2 次元配列の場合:

$nums = array( 
    array(1, 2, 3), 
    array(4, 5, 6), 
    array(7, 8, 9) 
);

次のように、array_map() 関数と null 値を使用して配列を転置できます:

function transposeArray($array, $nullFiltered = true) { 
    $aOut = array_map(null, ...$array); 
    return ($nullFiltered) ? array_filter($aOut) : $aOut; 
} 
 
print_r(transposeArray($nums));

出力結果は次のとおりです:

Array ( 
    [0] => Array ( [0] => 1 [1] => 4 [2] => 7 ) 
    [1] => Array ( [0] => 2 [1] => 5 [2] => 8 ) 
    [2] => Array ( [0] => 3 [1] => 6 [2] => 9 ) 
)

ここでは、まず、transposeArray という関数を定義し、配列とブール変数を渡します。このうち、PHP 5.6 バージョンで導入された可変長パラメータ (...$array) を使用して、転置される多次元配列の各部分配列に null 値を実装します。最後に、array_filter() 関数を使用して、結果配列内の null 値をフィルターで除外し、必要な結果を取得します。

3. 配列のソートと転置の組み合わせ

実際のプログラミング プロセスでは、特定のキーワードに従って多次元配列をソートする必要があり、ソート後には、配列は転置されます。たとえば、数値をキーとして持つ次のような連想配列があります。

$arr = array(
    3 => array("name" => "apple", "price" => 2.5),
    1 => array("name" => "banana", "price" => 1.5),
    4 => array("name" => "orange", "price" => 3.5),
    2 => array("name" => "pear", "price" => 2.0)
);

次に、sortArray() 関数を定義して、配列を「価格」に従って昇順に並べ替え、結果の配列を転置します。このプロセスでは、フィールド名を渡してさまざまなフィールドで並べ替えることもできます。コードは次のとおりです:

function sortArray($arr, $keyName = '', $sortOrder = 'ASC') {
    $sortResult = array();
    $arrLen = count($arr);
    if ($arrLen > 0) {
        $priceArr = array();
        for ($i = 0; $i < $arrLen; $i++) {
            if ($keyName != &#39;&#39; && isset($arr[$i][$keyName])) {
                $priceArr[] = $arr[$i][$keyName];
            } else {
                $priceArr[] = $arr[$i][&#39;price&#39;];
            }
        }
        if (strtolower($sortOrder) == &#39;desc&#39;) {
            array_multisort($priceArr, SORT_DESC, SORT_NUMERIC, $arr);
        } else {
            array_multisort($priceArr, SORT_ASC, SORT_NUMERIC, $arr);
        }
        $sortResult = transposeArray($arr);
    }
    return $sortResult;
}

print_r(sortArray($arr, &#39;price&#39;, &#39;ASC&#39;));

2 番目のパラメーターとして 'price' を渡すと、出力結果は次のようになります:

Array ( 
    [name] => Array ( [0] => banana [1] => pear [2] => apple [3] => orange ) 
    [price] => Array ( [0] => 1.5 [1] => 2 [2] => 2.5 [3] => 3.5 ) 
)

ここでは、最初に受信配列が空かどうかを判断します。空でない場合は、最初に元の配列の価格値を取得し、array_multisort() 関数を使用して配列を昇順または降順に並べ替えます。次に、transposeArray() 関数を使用して、結果の配列を転置します。

概要

要約すると、この記事では、PHP でインデックス配列をソートする方法を紹介します。並べ替えは sort() 関数と rsort() 関数を使用して実装され、配列の転置は transposeArray() 関数を使用して実装され、多次元配列の並べ替えと転置は並べ替えと転置を組み合わせることによって実装されます。これらの方法をマスターすると、PHP プログラミングの利便性と柔軟性が高まり、プログラム開発効率が向上します。

以上がPHP配列をインデックス配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。