【问题标题】:Push array inside array with strpos使用 strpos 将数组推入数组
【发布时间】:2017-08-02 08:30:15
【问题描述】:

我有一个数组,其中键是输入的名称,值是从表单提交的输入的值。应该是这样的

array {
  'qty' => '0',
  'name' => 'No name',
  'qty1' => '1',
  'name1' => 'John Cena'
  'qty2' => '2',
  'name2' => 'You cant see him'
}

我用这个只获取字符为 1 和 2 的键,在本例中为 'qty1''name1'' qty2''name2',我将它推入一个空数组 $emptyArray

foreach ($inputs as $x => $x_value) {
  if (stripos($x, "1") !== false) {
    array_push($emptyArray, $x_value);
  }
}

我希望得到结果

$arr = [
  0 => [1, 'John Cena'],
  1 => [2, 'You cant see him']
];

但我得到了这个:(

array(6) {
  ["qty"]=>
  string(1) "0"
  ["name"]=>
  string(7) "No name"
  ["qty1"]=>
  string(1) "1"
  ["name1"]=>
  string(9) "John Cena"
  ["qty2"]=>
  string(1) "2"
  ["name2"]=>
  string(16) "You cant see him"
}

【问题讨论】:

  • 你不能期望在同一个数组中有多次相同的键。这样的事情没有任何意义。
  • @ksjohn 哈哈,只是一个错字。那应该是 0 和 1

标签: php arrays multidimensional-array foreach


【解决方案1】:
$limit = count($inputs) / 2;
for ($idx = 0; $idx < $limit; ++$idx) {
    if (array_key_exists('qty'.$idx, $inputs) && array_key_exists('name'.$idx, $inputs)) {
        $arr[] = array($inputs['qty'.$idx], $inputs['name'.$idx]);
    }
}

【讨论】:

  • 我应该把这个for循环放在foreach里面吗?
  • 你为什么要这样做?我在那个循环中使用了你的 $inputs 数组。如果您知道自己感兴趣的键并且不会使用所有键,则无需 foreach。
  • 我的意思是我的输入是动态的,前端有一个部分,当用户单击一个按钮时,它将添加另一个输入字段,并且它的名称上的数字正在递增,qty1 qty2 qty3 与名称1 名称2 名称3
  • 只要这些键仍然命名为 'qty' 和 'name' 后跟它们的编号,并且有不使用的 'qty' 和 'name' 键,它就可以工作。这就是我使用count($inputs / 2) 作为$idx 的最大值的原因。
  • 我现在在 qty4 及更高版本中得到未定义的输入,因为我在您设置分成 2 的数组上只有 qty1 到 3。我在数组中有 16 个项目,我们将它划分为现在变为 8 . 似乎我会得到这个未定义直到 qty8
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2014-06-21
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
相关资源
最近更新 更多