2016-09-09 16 views
-1

私は説明できない興味深い行動があります。それは値をだから、私はループforeachを持つ配列は、他の出力アレイを作成します。Notice:配列要素の作成時に未定義オフセット:1?

$tabCount = 0; 
$mainDivs = array(); 

foreach($output as $node) { 
    $tabCount++; 
    $mainDivs[$tabCount] .= 'blablabla'; 
} 

出力があると、正しい(何も不足している)のようです。しかし、PHPは私にお知らせをスロー:

お知らせ:不定オフセット:Eでの1:\ XAMPP \ htdocsに\ WP \ WP-コンテンツ\プラグイン\テスト\ PHPの\のtest.phpをライン上の163

line 163は私が行っている行です$mainDivs[$tabCount] .= 'blablabla';

どのようにすることができますか?つまり、配列要素(?)を作成しますか?

+1

'foreachの($ノードとして$出力){ $ mainDivs [$ tabCount] = 'blablabla'。 $ tabCount ++; } '' '' ''を削除し、 '$ tabCount ++; '代入後 –

+2

これを必要としない'。= ' – devpro

+1

'.'は配列代入ではない連結のために使用されます –

答えて

1

.それを

を削除assignment.So連結のためではない配列のために使用されているので、コードがなければなりません: -

$tabCount = 0; 
$mainDivs = array(); 
if(isset($output) && count($output)>0){ // Check that your array is set and have values so that foreach will not produce error 
    foreach($output as $node) { 
     $mainDivs[$tabCount] = 'blablabla'; 
     $tabCount++; 
    } 
} 

注: -

参考: -

文字列連結: - http://php.net/manual/en/language.operators.string.php

配列: - http://php.net/manual/en/language.types.array.php

+1

おかげさまで嬉しいです。 :) :) :) –

1

通知は文字列の追加演算子.=のために発生します。 PHPは、新しい文字列を配列に書き込む前に$mainDivs[$tabCount]と読み込みます。その読書は、文字列blablablaを追加するneseccaryない場合

$mainDivs[$tabCount] = 'blablabla'; 

代わり

$mainDivs[$tabCount] .= 'blablabla'; 

で試してみてください通知を引き起こしています。あなたがsetないarrayindexにアクセスしようとしているため

1

1)あなたは、PHPnoticeを得ています。まずarraysを作成する方法を下回るありarrayvalue

単に

$mainDivs[$tabCount] = 'blablabla'; 

を割り当てる際に.を使用してはいけない)$output配列が値か

print_r($output);

2をチェックしてみてくださいを持ってチェックしてみてください:

$cars = array("Volvo", "BMW", "Toyota"); 

又は

$cars[] = "Volvo"; 
$cars[] = "BMW"; 
$cars[] = "Toyota"; 

またはインデックス手動で割り当てることができる:

$cars[0] = "Volvo"; 
$cars[1] = "BMW"; 
$cars[2] = "Toyota"; 
1

はドットを削除するこのようindexは、(インデックスは常に0から始まる)に自動的に割り当てることができあなたの使用しているドットがその行為を連結として意味している場合は。(。)

1)前に設定されていない値をcancatenateしようとすると、cancatenate = removeを使用する必要があります。

$mainDivs[$tabCount] .= 'blablabla'; 

あなたがインデックス化する必要はありませ

$mainDivs[] = 'blablabla'; 

に変更します。自動的にインデックスを作成し、ゼロからのみ開始します。

$mainDivs = array(); 

foreach($output as $node) { 

    $mainDivs[] = 'blablabla'; 

} 
1

配列割り当てで連結を使用する必要はありません。

この:

$mainDivs[$tabCount] .= 'blablabla'; 

は次のようになります。foreach()チェック配列count > 0かのいずれかを使用する前に

$mainDivs[$tabCount] = 'blablabla'; 

つ以上の提案。

例:

<?php 

$tabCount = 0; 
$mainDivs = array(); 

if(count($output) > 0){ // check the count 
    foreach($output as $node) { 
    $tabCount++; 
    $mainDivs[$tabCount] = 'blablabla';   
    } 
} 

?> 
関連する問題