1

次の配列があるとしましょう:

Array
(
[0] => Array
    (
        [0] => a
        [1] => 1
    )

[1] => Array
    (
        [0] => b
        [1] => 8
    )

[2] => Array
    (
        [0] => c
        [1] => 16
    )

[3] => Array
    (
        [0] => d
        [1] => 21
    )
....

)

内部配列の数値は、範囲(0、100)からランダムに生成され、繰り返されません。

0から100まで反復し、ループの反復が上記の配列の内部数と等しいかどうかを確認するループを作成したいと思います。例外的な結果は、100個の要素を持つ配列です。

Array
(
  [0] => const
  [1] => a
  [2] => const
  [3] => const
  [4] => const
  [5] => const
  [6] => const
  [7] => const
  [8] => b
  [9] => const
  [10] => const
  .
  .
  [16] => c
  [17] => const
  .
  .
  [21] => d
  [22] => const
  [23] => const
  .
  .
)

私が必要としているのは次のようなものです。

for ($i=0; $i < 100; $i++) {
  if($i === $name[$i][1]) {
    $new_array[] = $name[$i][0];
  } else {
    $new_array[] = 'const';
  }
}

しかし、私はそれを機能させることができないので、私はいくつかの助けが必要です。

私は英語を母国語としないので、私が何を達成したいのか理解していただければ幸いです。助けてくれてありがとう。

4

5 に答える 5

1

それが機能しない理由は、$iがインクリメントされるたびに で一致させようとしていて、 ですべて$name[$i]の配列をチェックしていないためです。$name次のようなことをする必要があります:

$new_array = array();

foreach ($name as $n) {
  $new_array[$n[1]] = $n[0];
}

for ($i=0; $i<100; $i++) {
  if (!isset($new_array[$i])) {
    $new_array[$i] = 'const';
  }
}
ksort($new_array);

まず最初に、$name配列をループし$new_arraykey=>valueペア (例: [1] => 'a', [8] => 'b') を設定し、forループ内でkey ($i)が既に設定されているかどうかを確認し、設定されていない場合はvalue「const」で設定します。最後に、$new_arrayキーでソートします。

この例の反復回数は ですがcount($name) + 100、ネストされたループの場合は になります100 * count($name)

于 2012-10-18T10:38:40.330 に答える
1

次のようなネストされたループが必要です。

for ($i=0; $i < 100; $i++):
   $found = false;
   foreach($name as $array):
      if($array[1] === $i):
         $found = true;
         $new_array[] = $array[0];
       endif;
   endforeach;
  if(!$found):
    $new_array[] = 'const';
  endif;
endfor;
于 2012-10-18T10:05:44.987 に答える
0
for ($i = 0; $i < count($name); ++$i) {
    if ($name[$i][1] === $i) {
        $name[$i] = $name[$i][0];
    } else {
        $name[$i] = 'const';
    }
}
于 2012-10-18T10:04:34.520 に答える
0

使用する

for ($i=0; $i < 100; $i++) {
 if($i === $name[$i][1]) {
   $new_array[$i] = $name[$i][0];
  }
  else{
    $new_array[$i] = 'const';
  }
}
于 2012-10-18T10:03:30.660 に答える
-1

Identicalの代わりに演算子を使用する理由Equal

for ($i=0; $i < 100; $i++) {
  if($i == $name[$i][1]) {
    $new_array[] = $name[$i][0];
  } else {
    $new_array[] = 'const';
  }
}
于 2012-10-18T10:05:33.363 に答える