从php中的数组中获取值的索引

时间:2015-04-22 05:40:39

标签: php arrays foreach

我有下面的php数组$tempStyleArray,它是通过吐出字符串创建的。

$tempStyleArray = preg_split( "/[:;]+/", "width: 569px; height: 26.456692913px; margin: 0px; border: 2px solid black;" );


Array
(
    [0] => width
    [1] =>  569px
    [2] =>  height
    [3] =>  26.456692913px
    [4] =>  margin
    [5] =>  0px
    [6] =>  border
    [7] =>  2px solid black
    [8] => 
)

我必须从此数组中获取元素index/key的{​​{1}}。我试过下面的代码,但似乎没有什么对我有用。

height

在上述解决方案中它不满足条件:(

foreach($tempStyleArray as  $value)
{
   if($value == "height") // not satisfying this condition
   {
     echo $value;
     echo '</br>';
     $key = $i;
   }
} 

帮帮我解决这个问题?我的数组格式有问题吗?

5 个答案:

答案 0 :(得分:4)

foreach($tempStyleArray as  $value)
{
   if($value == "height") // not satisfying this condition
   {
     echo $value;
     echo '</br>';
     $key = $i;
   }
} 

什么是$ i ?,最好使用key =&gt;值。

foreach($tempStyleArray as  $key => $value)
{
   if($value == "height") // not satisfying this condition
   {
     echo $value;
     echo '</br>';
     echo $key;
   }
} 

看看你的数组,看来你想说“宽度”将是569像素,那么最好这样做:

$tempStyleArray = array(
    "width" =>  "569px",
    "height" => "26.456692913px",
    "margin" => "0px",
    "border" => "2px solid black"
);

这样你就可以说

echo $tempStyleArray["width"];

这会更快,您无需进行搜索。

更新:

for( $i == 1; $i < count($tempStyleArray); $i = $i+2)
{
    $newArray[ $tempStyleArray[$i-1] ] = $tempStyleArray[$i]
}

你可以得到一个基于散列的数组。

答案 1 :(得分:2)

你从数组中取错了值

应该是

 foreach($tempStyleArray as $temp => $value) {
    if($value == "height") // will satisfy this condition
    { 
        echo $value; 
        echo '</br>'; 
        $key = $i;
    }
 } 

答案 2 :(得分:2)

试试这个 -

$tempStyleArray = array_map('trim', preg_split( "/[:;]+/", "width: 569px; height: 26.456692913px; margin: 0px; border: 2px solid black;" ));
var_dump($tempStyleArray);
$key = array_search('height', $tempStyleArray);
echo $key;

之所以发生这种情况,是因为space中的值为array。所以需要trimmed。拆分字符串后,每个值都将通过trim()传递,以便删除white spaces

答案 3 :(得分:2)

使用如下(像associative数组一样对待

foreach($tempStyleArray as   $key => $value){
   if($value == "height") // not satisfying this condition
   {
     echo $value;
     echo '</br>';
     echo $key;
   }
}

答案 4 :(得分:1)

您的代码中存在错误。请尝试:

foreach($tempStyleArray as  $key => $value)
{
   if($value == "height") 
   {
     echo $key;
   }
}