【问题标题】:Get index of value from an array in php从php中的数组中获取值的索引
【发布时间】:2015-04-22 05:40:38
【问题描述】:

我有下面的 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] => 
)

我必须从这个数组中获取元素heightindex/key。我尝试了以下代码,但似乎没有什么对我有用。

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

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

$key = array_search('height', $tempStyleArray); // this one not returning anything

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

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:
    foreach($tempStyleArray as  $value)
    {
       if($value == "height") // not satisfying this condition
       {
         echo $value;
         echo '</br>';
         $key = $i;
       }
    } 
    

    $i 是什么?最好使用 key=>value 来代替。

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

    查看您的数组,您似乎想说“宽度”将是 569px,那么这样做可能会更好:

    $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]
    }
    

    你可以得到一个基于哈希的数组。

    【讨论】:

    • 我的错,这个解决方案不起作用..但你的建议很棒。检查我编辑的问题..我通过拆分字符串来生成这个数组,我怎样才能像你建议的那样制作我的数组?
    • 已更新,如果您的“数组”会很大并且您需要对其进行大量查询,这将比使用 array_search 更好。
    【解决方案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】:

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

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

    【讨论】:

      【解决方案4】:

      您从数组中获取了错误的值

      应该是

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-02-03
          • 2017-11-08
          • 1970-01-01
          • 2011-02-26
          • 2011-04-15
          • 1970-01-01
          • 2015-04-24
          • 1970-01-01
          • 2016-03-20
          相关资源
          最近更新 更多