无效的参数错误:foreach

时间:2013-06-14 03:32:45

标签: php foreach arguments

运行以下代码时,我收到错误消息为为foreach()提供的无效参数:

$datatoconvert = "Some Word";
$converteddata = "";
$n=1;

$converteddata .=$datatoconvert[0];

foreach ($datatoconvert as $arr) {
 if($arr[n] != ' ') {
  $n++;
 } else {
  $n++;
  $converteddata .=$arr[n];
 }
}

代码应该找到每个单词的第一个字符并返回带有这些字符的字符串。所以在上面的例子中,我试图将输出作为“SW”。

3 个答案:

答案 0 :(得分:1)

首先需要将字符串$ datatoconvert分解为数组。

$words = explode(' ', $datatoconvert); 

应该做的伎俩。然后在$ words上使用foreach()。

答案 1 :(得分:1)

您必须为foreach提供数组或可迭代。

要实现您的目标:

$string = "Some Word";
$string = trim($string); //Removes extra white-spaces aroud the $string

$pieces = explode(" ", $string); //Splits the $string at the white-spaces

$output = "";  //Creates an empty output string
foreach ($pieces as $piece) {
   if ($piece) //Checks if the piece is not empty
     $output .= substr($piece, 0, 1); //Add the first letter to the output
}

请记住,如果您使用的是多字节字符串,请阅读PHP mbstring函数。

希望我有所帮助。

答案 2 :(得分:1)

当你做

$datatoconvert = "Some Word";
$converteddata = "";
$n=1;

$converteddata .=$datatoconvert[0];

你会得到的是(Live output

string(1) "S"

你可以通过爆炸轻松获得

$datatoconvert = "Some Word";
$converteddata = "";

$words = explode(" ", $datatoconvert );
foreach ($words as $a) {
  $converteddata .= $a[0];
}
echo $converteddata ;

Live output