0

下面是我的代码,

<? foreach($goodsview as $key=>$value)
echo $value;
?>

上面的代码通过显示数组中的所有值完美地工作,现在我需要perticular使用 foreach 循环本身来获取值,

echo $value['myvalue'] ;

但我得到一个错误“非法字符串偏移”我的价值“我们如何解决这个问题?

4

5 回答 5

0

这行不通,因为$values不存在

foreach($goodsview as $key => $value)
   echo $values;

如果$value是字符串或数字等,这可能有效,但如果它是数组则无效。

foreach($goodsview as $key => $value)
   echo $value;

字符串偏移错误是指您访问数组之类的字符串,但您使用的键不存在。

让我解释。

$string = "Jake";
echo $sting[0]; //outputs 'J'
echo $sting[3]; //outputs 'e'
echo $sting['doom']; // will fail


$array = array("Jake", "doom"=>3);
echo $sting[0]; //outputs 'Jake'
echo $sting[3]; //will fail
echo $sting['doom']; // outputs 3

字符串也是如此$value,而不是数组。

您也可以像这样访问您的数组$goodsview[$key],这将为您提供与$value.

于 2013-07-19T00:38:52.657 回答
0

好吧,让我回答我自己的问题,实际上我的数组是一个single dimentional所以这个方法不起作用

echo $value['myvalue'] ;

所以我们必须使用

echo $arr[$key]

但它显示了多个元素,就好像它在 foreachloop 中运行一样,所以不使用 foreach 循环我们必须显示类似的结果

echo $goodsview['myvalue']

希望将来遇到类似问题的人会有所帮助...谢谢大家回答这个问题,

于 2013-07-19T10:12:25.353 回答
0

变量$value不是数组而是字符串。这就是显示错误消息的原因。

没有看到代码没有太多建议。但总的来说,这就是 foreach 循环的工作方式:

假设您的数组结构如下。

Array
(
    [name] => Tom
    [gender] => Male
    [age] => 18
)

要显示所有元素,即'Tom', 'Male', '18',您可以执行以下操作:

foreach ($array as $key => $value) {
     echo $arr[$key].'<br>';
} 

输出:

Tom
Male
18

要仅检索特定值:

例如,如果您想检索此人的姓名,您可以执行以下操作:

echo $arr['name']; //Tom
echo $arr['gender']; //Male
echo $arr['age']; //18

希望这可以为您解决问题!:)

于 2013-07-19T00:34:34.703 回答
0

$value保存foreach循环中的值。它与 相同$goodsview[$key]。如果您只想要一个值,请不要使用循环。$goodsview['myvalue']如果您的 Array 看起来像$goodsview = array('myvalue' => 'This would be the value').

于 2013-07-19T00:36:42.550 回答
0

它可能是在黑暗中拍摄的,但看起来你可能正在处理类似循环的东西来显示选择元素的选项。如果您只是想要一个特定的数组元素,通常不会在循环上浪费时间。

这是否给您任何想法:

<select name="myvalue">
<?php
foreach($goodsview as $key=>$value) {
  $seltxt='';
  // assume $myvalue is the previously posted value from the select
  // if the $key matches the posted $myvalue - mark this option as selected
  if (!strcmp($key,$myvalue)) $seltxt=' selected';
  echo "<option value=\"$key\"$seltxt>$value</option>\n";
}
?>
</select>

只是一个想法。

于 2013-07-19T00:50:33.130 回答