2011-12-20 1 views
0

私は挿入を行うために配列をimplodeしようとしていますが、私が行ったエラーはトリガーできませんでした。 破()[function.implode]:無効な引数はので、私はforeachの*Implode array error out

アレイ構造

[attcode] => Array ([0] => [1] => [2] =>) 
[color] => Array ([0] => [1] => [2] =>) 
[size] => Array ([0] => [1] => [2] =>) 
[stock] => Array ([0] => [1] => [2] =>) 

の作業コード

$attstring = array();//array for storing query set 

    foreach($productcount['attcode'] as $attcode){ 
      $attstring[] = "'" . implode("','", $attcode)."'"; 
      } 

     foreach($productcount['color'] as $attcolor){ 

      $attstring[] = "'" . implode("','", $attcolor)."'"; 
      } 

    foreach($productcount['size'] as $attsize){ 
      $attstring[] = "'" . implode("','", $attsize)."'"; 
      } 

    foreach($productcount['stock'] as $attstock){ 
      $attstring[] = "'" . implode("','", $attstock) . "'"; 
      } 


    $finalvalue = "(" . implode("), (", $attstring) . ")"; 

      echo $finalvalue; 
を使用修正
は*私の配列のサイズに注意してくださいされていない渡さ

希望出力

('code','color','size',stock), 
('code','color','size',stock), 
('code','color','size',stock) 
+0

所望の出力に基づいて、私はあなたがこのような何かをしたい数えますId氏はACTUALアレイレイアウトを見てみたい。 0,1,2の値は?キー? – Dutchie432

+2

配列を渡していないためforeachブロック内のimplodeが間違っています – Dan

+0

foreachは配列を反復しているので、$ attcodeは配列ではなく文字列なので、implodeは機能しません。 – Demelziraptor

答えて

1

あなたのアレイ構造が希望の出力フォーマットに適合しません。だからインプラントは機能しません。

<?php 

$my_array = ARRAY(); 
$my_array['attcode'] = Array (0 => 0, 1 => 1, 2 => 2); 
$my_array['color'] = Array (0 => 'red', 1 => 'green', 2 => 'blue'); 
$my_array['size'] = Array (0 => 100, 1 => 200, 2 => 300); 
$my_array['stock'] = Array (0 => 11, 1 => 22, 2 => 33); 

$loop_me = count($my_array['attcode']) - 1; 
for ($i=0; $i<=$loop_me; $i++) { 
    echo '<div>Code: '.$my_array['attcode'][$i].' | Color: '.$my_array['color'][$i].' | Size: '.$my_array['size'][$i].' | Stock: '.$my_array['stock'][$i].'</div>'; 
} 

?> 

あなたはエラーメッセージの最も重要な部分を残し出力

Code: 0 | Color: red | Size: 100 | Stock: 11 | 
Code: 1 | Color: green | Size: 200 | Stock: 22 | 
Code: 2 | Color: blue | Size: 300 | Stock: 33 | 
+1

for($ i = 0、$ j = count($ my_array ['attcode']); $ i <$ j; $ i ++) 'のforループを作成すると、この答えはさらに良くなると思います。 –

+0

はい、間違っているのは3つだけですが、固定されているのは配列インデックスattcode、color、size、stock; – djot

1

試してみてください。

 
implode(',', $productcount['attcode']); 
//same for others 
0

破は配列で動作ではなく、それは、それは配列要素と目的の文字列を値を追加しています。配列値をimplodeに渡しています。 pls check this詳細について

0

。 implodeは配列を期待しており、文字列を渡したと言います。

<?php 

$productcount = array( 
    'attcode' => array ('0', '1', '2'), 
    'color' => array ('red', 'green', 'blue'), 
    'size' => array('0', '1', '2'), 
    'stock' => array (100, 200, 300) 
); 

$outcome = array(); 

foreach($productcount['attcode'] as $index => $code) { 
    $outcome[] = array(
     'attcode' => $code, 
     'color' => isset($productcount['color'][$index]) ? $productcount['color'][$index] : null, 
     'size' => isset($productcount['size'][$index]) ? $productcount['size'][$index] : null, 
     'stock' => isset($productcount['stock'][$index]) ? $productcount['stock'][$index] : null 
    ); 
} 

var_dump($outcome); 
0

http://php.net/manual/en/function.implode.php

$attstring = array();//array for storing query set 

foreach($productcount as $attributeCount){ 
    $attstring[] = "'" . implode("','", $attributeCount)."'"; 
} 

$finalvalue = "(" . implode("), (", $attstring) . ")"; 

echo $finalvalue; 
0

私はあなたが欲しいの出力のために間違った配列を作成したと思う:

$products = array(); 
$products[] = array('attrcode' => 'XXXX', 'color' => 'black', 'size' => '12', 'stock' => 'yes'); 
$products[] = array('attrcode' => 'XXXX', 'color' => 'white', 'size' => '5', 'stock' => 'no'); 

$imploded_products = array(); 
foreach ($products as $product) { 
    $imploded_products[] = "'".implode("','", $product)."'"; 
} 

$finalvalue = "(".implode("), (", $imploded_products).")"; 

echo $finalvalue; 
関連する問題