0

これが私の例の配列です

$inputs = array();

array(4) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["name"]=>
    string(4) "13.1"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(1) "2"
    ["name"]=>
    string(4) "13.2"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(1) "3"
    ["name"]=>
    string(4) "14.1"
  }
  [3]=>
  array(2) {
    ["id"]=>
    string(1) "4"
    ["name"]=>
    string(4) "14.2"
  }
}

foreachループ中に、現在作業している可能性が$inputs[2]あり、条件付きロジックは、このループのすぐ上に新しい配列を追加する必要があると判断します。次の例を参照してください。

array(4) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["name"]=>
    string(4) "13.1"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(1) "2"
    ["name"]=>
    string(4) "13.2"
  }

  [2]=>
  array(2) {
    ["id"]=>
    string(1) "NEW"
    ["name"]=>
    string(4) "NEW"
  }

  [3]=>
  array(2) {
    ["id"]=>
    string(1) "3"
    ["name"]=>
    string(4) "14.1"
  }
  [4]=>
  array(2) {
    ["id"]=>
    string(1) "4"
    ["name"]=>
    string(4) "14.2"
  }
}

どうすればいいですか?

よろしくお願いします

4

5 に答える 5

4

あなたはこれを行うことができますarray_splice

$inputs = ... your original array;
$newElement = array(array('id' => 'NEW', 'name' => 'NEW'));
array_splice($inputs, 2, 0, $newElement);

var_dump($inputs); // your desired array :)

編集:$newElement初期化を修正しました。新しい要素を含む配列である必要があるため、必要な新しい要素を含む配列、新しい配列である必要があります。

于 2012-10-31T11:30:27.377 に答える
1

単純な for で array_splice を使用できます

for ($i = 0; $i < count($array); ++$i) {
    if (/* condition is true */) {
        array_splice($array, $i, 0, /* your new array */);
        ++$i;
    }
}
于 2012-10-31T11:32:06.180 に答える
0

あなたは新しいものを作る必要があるでしょうarray

試す

$array = array(
        0 => array("id" => "1","name" => "13.1"),
        1 => array("id" => "2","name" => "13.2"),
        2 => array("id" => "3","name" => "14.1"),
        3 => array("id" => "4","name" => "14.2"));


$append = array("id" => "new","name" => "new");
$copy = array();
$id = 2 ; // add after this ID

foreach($array as $value)
{
    $copy[] = $value ;
    $id == $value['id'] AND $copy[] = $append ;

}

var_dump($copy);

出力

array
  0 => 
    array
      'id' => string '1' (length=1)
      'name' => string '13.1' (length=4)
  1 => 
    array
      'id' => string '2' (length=1)
      'name' => string '13.2' (length=4)
  2 => 
    array
      'id' => string 'new' (length=3)
      'name' => string 'new' (length=3)
  3 => 
    array
      'id' => string '3' (length=1)
      'name' => string '14.1' (length=4)
  4 => 
    array
      'id' => string '4' (length=1)
      'name' => string '14.2' (length=4)
于 2012-10-31T11:30:41.397 に答える
0

関数を使用できます:

function insertIn($array, $position, $element)
{
    $output = array();
    for($i=0;$i<$position;$i++)
    {
         $output[$i] = $array[$i];
    }
    $output[$position] = $element;
    for($i=$position+1;$i<count($array)+1;$i++)
    {
         $output[$i] = $array[$i-1];
    }
    return $output;
}
于 2012-10-31T11:31:38.287 に答える
0

私はこのように考えています:

$new_array= array_merge( array_slice($array, 0, $pos), array(($pos+1)=>$value), array_slice($array, $pos, count($array)-$pos) );

そこにバグがあるかもしれませんが、あなたはアイデアを得る..

于 2012-10-31T11:34:16.837 に答える