2009-08-04 3 views

答えて

0

これでうまくいくはずです。なぜそれは機能しませんか?どのようなエラーメッセージが表示されますか? これは私が使用するコードです:

$inArr;//This is the 2D array 
$outArr = array(); 
for($i=0;$i<count($inArr);$i++){ 
     $outArr[$i] = $inArr[$i][0]; 
} 
+1

ああ問題があるかもしれません...多分私は数えます。$記号が必要です> Supernovah

+0

@Supernovah:すべての変数は、アクセスするたびにその名前の前に$記号が必要です。 – lacop

1
// Make sure you have your first array initialised here! 
$array2 = array(); 
foreach ($array AS $item) 
{ 
    $array2[] = $item[0]; 
} 

動作しない古いものに戻って新しい配列を再割り当てすることができます。

$array = $array2; 
unset($array2); // Not needed, but helps with keeping memory down 

また、配列の内容に応じて、次のようなことを行うことができます。

​​
+0

おかげで私は、変数が読み込まれた後、PHPで変数を記述する必要があり、別の変数名を使用したくありませんか?私は思った? – Supernovah

+0

はい、しかし、あなたはループでそれを持っているので、少し混乱を少なくするでしょう。また、各繰り返しでcount()が評価されます。だからあなたがそれに物事を加える時、これはいつも変わるつもりです。 PHPの変数名の数に制限はありません! ($ array = $ array2;) – Mez

+0

foreachループでforeachループ内で "in place"を変更できることがわかりました。foreach($ myarray as&$ item) – grantwparks

1

ソース配列を数値のインデックスでない場合は問題があるかもしれません。代わりにこれを試してください:

$destinationArray = array(); 
for ($sourceArray as $key=>$value) { 
    $destinationArray[] = $value[0]; //you may want to use a different index than '0' 
} 
+0

これは当てはまりますが、私の配列は数値です - エラーは私の変数です私は変数denoterを使わずに参照されました$ – Supernovah

1

前述のとおり、さまざまな状況でコードが正しく動作しません。 この値を使って配列を初期化するようにしてください:

$cond = array(5=>array('4','3'),9=>array('3','4')); 

ソリューション、私には良く読み、以下のコードです:

//explain what to do to every single line of the 2d array 
function reduceRowToFirstItem($x) { return $x[0]; } 

// apply the trasnformation to the array 
$a=array_map('reduceRowTofirstItem',$cond); 

あなたは完全な説明のためreference for array mapを読むことができます。

array_walkを使用してわずかなバリエーションを選択することもできます(これは、「適切な場所に」アレイ上で動作します)。この関数は値を返さず、パラメータが参照渡しであることに注意してください。

function reduceToFirstItem(&$x) { $x=$x[0]; } 
array_walk($cond, 'reduceToFirstItem'); 
+0

私が書いているコードはプライベートなので、配列は必ずギャップなしで0から始まる数値になります。しかし、私は思考をスキップしていたので、通知のためにあなたに感謝します。 – Supernovah

+0

バグの可能性を指摘するだけでした。コードを再利用しないと思われる場合は、このアドバイスを無視してもかまいません。 – Eineki

3

それは、このような単純なものすることができます応答のための

$array = array_map('reset', $array); 
関連する問題