1

何度か試みた後、私はこれを行うための効率的な方法を見つけることができませんでした。preg_match_all私は現在、このような3つの配列を実行して返す関数を持っています。

array(3) {
    ["name"] => 
        array(3) { 
             0 => "Google Chrome 22.0.1229.94",
             1 => "LastPass for Chrome 2.0.7",
             2 => "Chromatic 0.2.3"
        }

    ["link"] => 
        array(3) {
            0 => "/app/mac/32956/google-chrome",
            1 => "/app/mac/42578/lastpass-for-chrome",
            2 => "/app/mac/32856/chromatic"
        }

    ["description"] =>
        array(3) {
            0 => " - Modern and fast Web browser."
            1 => " - Online password manager and form filler for Chrome."
            2 => " - Easily install and updated Chromium."
    }
}

このように3つの配列を組み合わせることができる必要があります。

array(3) {
    array(3) {
        ["name"]        = "Google Chrome 22.0.1229.94",
        ["link"]        = "/app/mac/32956/google-chrome",
        ["description"] = " - Modern and fast Web browser."
    }

    array(3) {
        ["name"]        = "LastPass for Chrome 2.0.7",
        ["link"]        = "/app/mac/42578/lastpass-for-chrome",
        ["description"] = " - Online password manager and form filler for Chrome."
    }

    array(3) {
        ["name"]        = "Chromatic 0.2.3",
        ["link"]        = "/app/mac/32856/chromatic",
        ["description"] = " - Easily install and updated Chromium."
    }
} 

私はcount( $values )新しい配列を作成するためにforループを実行しようとしてきました。

4

2 に答える 2

2

これは私の見解です。あなたの特定のケースでは、元の配列が$results次のようになっています。

for ($i=0; $i<3;$i++) {
   $combined[$i]['name'] = $results['name'][$i];
   $combined[$i]['link'] = $results['link'][$i];
   $combined[$i]['description'] = $results['description'][$i];
}
于 2012-11-05T10:05:04.153 に答える
1

私は先に進んで、あなたが本当に探しているのは次のPREG_SET_ORDERフラグであることを提案しますpreg_match_all

preg_match_all('/.../', $foo, $bar, PREG_SET_ORDER);

http://php.net/preg_match_all

さもないと:

$results = array();
foreach ($matches as $key => $values) {
    foreach ($values as $index => $value) {
        $results[$index][$key] = $value;
    }
}
于 2012-11-05T08:59:30.797 に答える