ホームページ > バックエンド開発 > PHPチュートリアル > Foreach ループ配列関連の問題

Foreach ループ配列関連の問題

WBOY
リリース: 2016-06-13 12:54:56
オリジナル
755 人が閲覧しました

foreach ループの配列問題
$account の配列は次のとおりです
配列
(
[テンセント] => 配列
(
[0] => mylove_fish2008
[1] => caochengli_love
)

[シナ] => 配列
(
[0] => 2935994540
[1] => 3177446321
)

[163] => 配列
(
[0] => 3395157578
[1] => 8589895537
)

[ソーフ] => 配列
(
[0] => 1400582280
[1] => )

)

この配列をループさせたいのですが、方法は 2 つあります
1.foreach ($account as $key => $rows)
{
foreach ($rows as $val)
{
$val をエコーし​​ます。';
}
}

2.foreach ($account['tencent'] as $val)
{
$val をエコーし​​ます。';
}
$account['sina'],$account['163'],$account['sohu'] も同様にループします

この 2 次元配列をループする場合、どちらがより効率的でしょうか?


-----解決策---------
引用: 引用: 2 次元配列に N 個の 1 ビット配列が含まれており、1 次元配列
に M 個のキー値があるとします。 次に、例 1 の完全な走査の時間計算量
O(N*M)
例 2
O(M M M)(N)=》O(N*M)
効率は同じはずだと思います

// 2 つのループ
$t1 = マイクロタイム(true);
$data = array('tencent' => a....
実際、投稿者が述べたように、ブラウザでの例 2 の効率は例 1 の 2 倍近く高速ですが、投稿者が示した例 1 のテスト ケースは
だと思います。 $t1 = マイクロタイム(true);
$data = array('tencent' => array('cadfdg', 'dfdgg'), 'sina' => array('111', '4654654'));
場所を交換する必要があります
以下は私のテストコードです

クラス ランタイム { <br>
パブリック $StartTime = 0;
public $StopTime = 0;<br>
<br>
関数 get_microtime(){ <br>
list($usec, $sec) =explode(' ', microtime());
return ((float)$usec (float)$sec);
}<br>
<br>
関数 start(){ <br>
$this->StartTime = $this->get_microtime(); <br>
}<br>
<br>
関数 stop(){ <br>
$this->StopTime = $this->get_microtime(); <br>
}<br>
<br>
関数の使用済み(){ <br>
return Round(($this->StopTime - $this->StartTime) * 1000, 4);
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート