【问题标题】:How to get and change value of element array in Laravel?如何在 Laravel 中获取和更改元素数组的值?
【发布时间】:2015-12-22 20:35:10
【问题描述】:

我有 2 个数组:

$array_1 = [1,2,3,1,2];

和:

$array_2 = [0,0,0,0,0];

我想改变$array_2的值,所以它会显示$array_1中的元素是数字1还是2。

foreach($array_1 as $item)
{
    if($item = 1 || $iten == 2)
    { 
        $index = ...;//how to get index of this element
        $array_2[$index] = 1; //I don't sure this syntax is right  
    }
}

输出 $array_2 应类似于:$array_2 = [1,1,0,1,1]

【问题讨论】:

    标签: php arrays laravel indexing


    【解决方案1】:

    试试这个代码

    $array_1 = array(1,2,3,1,2);
    foreach($array_1 as &$item)
    {
      if($item = 1 || $item == 2) {
        $item = 1;
      }
    }
    
    echo $array_1;
    

    【讨论】:

    • 我上面的代码只是示例,$array 1 不能更改。实际上,结构的 $array_1 和结构的 $array_2 是不同的
    【解决方案2】:

    我猜你只是想将1、2以外的项目替换为0,如果我错了,请纠正我。

    $array_3 = array();
    
    foreach ($array_1 as $key => $item)
    {
        if($item == 1 || $item == 2)
        { 
            $array_3[$key] = $item;  
        } 
        else 
        {
            $array_3[$key] = 0;
        }
    }
    

    【讨论】:

      【解决方案3】:
      <?php
      
      // your code goes here
      $array_1 = [1,2,3,1,2];
      
      $array_2 = [0,0,0,0,0];
      $index = 0;
      foreach($array_1 as $item)
      {
          if($item == 1 || $item == 2)
          { 
              //how to get index of this emlement
              $array_2[$index] = 1; //I don't sure this syntax is right  
          }
          else
          {
              //do nothing
          }
          $index++;
      
      }
      
      echo "<pre>";
      print_r($array_2);
      echo "</pre>";
      

      【讨论】:

      • 我上面的代码只是一个例子,$array_1 会被访问很多次。但是这段代码可能对我有帮助,当 $array_1 被访问时,变量 $index 将被设置。
      【解决方案4】:

      以下 PHP 代码可能符合您的预期:

      <?php
      $valid = [1, 2]; // allows you to extend a bit later
      $array_1 = [1,2,3,1,2];
      
      $array_2 = array_map(function($var) use ($valid) {
          return in_array($var, $valid) ? 1 : 0; 
      }, $array_1);
      
      print_r($array_2); // [1, 1, 0, 1, 1]
      

      看看array_map函数http://php.net/manual/en/function.array-map.php

      【讨论】:

        【解决方案5】:

        在 Laravel 5 或更高版本中,你可以这样做:
        只需将数组传递给此函数,使用点符号来处理嵌套数组

        use Illuminate\Support\Arr;
        Arr::set($data, 'person.name', 'Calixto');
        

        或者你可以使用这个 Laravel Helpers:

        $data = ['products' => ['desk' => ['price' => 100]]];
        data_set($data, 'products.desk.price', 200, false);
        

        更多细节请查看 laravel 文档: Laravel Docs Helpers

        【讨论】:

        • 以下是How do I write a good answer? 的一些指南。提供的这个答案可能是正确的,但它可以从解释中受益。仅代码答案不被视为“好”答案。来自review
        • 对不起,我编辑了我的答案。我希望这对现在有帮助,谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-02
        • 2015-05-01
        • 1970-01-01
        • 2022-06-18
        • 1970-01-01
        • 2020-10-16
        • 2014-09-15
        相关资源
        最近更新 更多