【问题标题】:PHP extracting values from array and restoring them into another arrayPHP从数组中提取值并将它们恢复到另一个数组中
【发布时间】:2013-12-31 18:46:48
【问题描述】:

我从以下形式的 mysql 表中提取了一个值数组:

$name_ids = EMP-646
            EMP-545
            EMP-12
            CLIENT-36
            CLIENT-43
            CLIENT-5

我想将 EMP 和 CLIENT 标识为单独的数据,然后仅提取整数值,然后将它们存储到单独的变量中。例如:

$emp_id =    646
             545
             12

$client_id = 36
             43 
             5

这是我的尝试,但我无法打印所需的结果(不确定我的逻辑是否正确):

$name_ids = array($_SESSION['INVITED_NAMES']);

foreach($name_ids[0] as $name_id){
  if(stripos($name_id, 'EMP') !== false){ 
    $emp_id = preg_replace("/[^0-9]/","",$name_id);
  }
  elseif(stripos($name_id, 'CLIENT') !== false){ 
    $client_id = preg_replace("/[^0-9]/","",$name_id);
  }

  echo $emp_id.' '; //both results need to happen at this stage in the `foreach` loop.
  echo $client_id.' ';              
}

需要注意的一点是,由于其他代码依赖于该位置,我需要将结果显示在它们所在的位置。使用当前代码,这是我得到的结果:

646 545 12 36 12 43 12 5 12

错误出现在第一个 if 语句 ($emp_id) 处,当值为 false 时,它​​将返回 true 值的最后一个 int,直到循环结束。任何帮助是极大的赞赏。

【问题讨论】:

    标签: php mysql arrays loops


    【解决方案1】:

    它正在运行:https://eval.in/84445

    相关代码:

    $emp_ids = array();
    $client_ids = array();
    
    $name_ids = array('EMP-646',
                'EMP-545',
                'EMP-12',
                'CLIENT-36',
                'CLIENT-43',
                'CLIENT-5');
    
    var_dump($name_ids);            
    
    foreach($name_ids as $name_id){
      if(stripos($name_id, 'EMP') !== false){ 
        $emp_id = preg_replace("/[^0-9]/","",$name_id);
        array_push($emp_ids, $emp_id);
      }
      elseif(stripos($name_id, 'CLIENT') !== false){ 
        $client_id = preg_replace("/[^0-9]/","",$name_id);
        array_push($client_ids, $client_id);
      }
    
    }
    
    echo "Emp_ids are: ";
    var_dump($emp_ids);
    
    echo "Client_ids are: ";
    var_dump($client_ids);
    

    我刚刚创建了数组来存储值,并将它们推入。

    【讨论】:

    • 感谢您的回复。您的解决方案基本上就是我所要求的。但是,这不是我要寻找的结果。没有更具体地解释我需要的结果是我的错。输出数据无法保存到数组中,因为我将数据插入到表中,并且每个值都需要单独插入。这就是为什么我需要将 2 个变量保留在 foreach 循环中。也许不可能做我正在寻找的事情。
    • 一旦你把它们放在 2 个 sep 数组中,你可以用它们做几乎任何你想做的事情。我在您的帖子中看到了该评论,并且您无法为每个值获得 2 个值...考虑一下。第一次循环时,值为'EMP-646',那怎么会有CLIENT值呢?
    • 如果您需要配对的值,您只需创建一个新的 $i 循环并使用 $emp_ids[$i], $client_ids[$i]。
    • 是的,我明白你的意思。我只需要带着这个回到绘图板上。
    • 你已经很接近了......也许提交一个与你的数组以及你需要如何插入它们有关的新问题。
    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 2017-02-16
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多