1

文字列値の配列を変換する関数を作成しようとしていました。コードは次のとおりです。

function makestring($array)
  {
  $outval = '';
  foreach($array as $key=>$value)
    {
    if(is_array($value))
      {
      $outval .= makestring($value);
      }
    else
      {
      $outval .= $value;
      }
    }
  return $outval;
  }

しかし、次のエラーが表示されます: 警告: foreach() に無効な引数が指定されました。誰でも私を助けてもらえますか?

4

8 に答える 8

1
function makestring($array)
{
    if(is_array( $array )) {
        $outval = '';
        foreach($array as $key=>$value)
        {
            if(is_array($value))
            {
                $outval .= makestring($value);
            }
            else
            {
                $outval .= $value;
            }
        }
        return $outval;
    } else {
        die("Supplied argument is not an array");
    }
}
OR 
function makestring( array $array)
{
    // you code goes here
}

これを試して。array使用する前に、引数を渡すかどうかを確認する必要がありますforeach

于 2013-07-04T08:38:14.953 に答える
0
$array = array(
    '1',
    '2',
    '3',
    array(
        '4',
        '5',
        array(
            '6',
            '7'
        )
    )
);
$output = null;
if(!is_array($array)){
    $array = array($array);
}
// use a reference to the $output in the callback
array_walk_recursive($array, function($array_element) use (&$output){
    if(is_object($array_element) and method_exists($array_element, '__toString')){
        $array_element = strval($array_element);
    }
    if(is_scalar($array_element)){
        $output .= $array_element;
    }else{
        // found a non scalar... handle it! :)
    }
});
echo $output;

これをチェックしてください。

于 2013-07-04T08:47:44.143 に答える
0

foreach でのエラーを防ぐには、型を変数に設定することをお勧めします。

foreach((array)$someArray as $data) {

$someArray が配列でない場合でも、エラーは発生しません。

于 2013-07-04T08:39:56.630 に答える
0

→これを試してください:

  function makestring($array)
  {
       $outval = '';
       $keys = array_keys( $array );

       for( $x = 0; $x < count( $array ); $x++ )
       {
            if( is_array( $array[ $keys[ $x ] ] ) )
            {
                 $outval .= makestring( $array[ $keys[ $x ] ] );
            }
            else
            {
                 $outval .= $array[ $keys[ $x ] ];
            }
       }
  return $outval;
  }
于 2013-07-04T08:40:21.290 に答える