【问题标题】:How do you create an array from variables derived from a foreach loop?如何从 foreach 循环派生的变量创建数组?
【发布时间】:2013-11-22 23:38:42
【问题描述】:

我确信这非常简单,但是作为新手并且不知道自己在做什么,我不能完全靠自己完成它。

我正在尝试创建一个从简单的 foreach 循环派生的 wordpress 帖子 ID 数组。

基本上我有这个作为我的代码:

$omit_these_quizzes = array();    
foreach ( $filtered_pass as $single_quiz ) {
    $quiz_id_number =  $single_quiz['quiz'];
    $omit_these_quizzes[] = $quiz_id_number;
}

我想获取每个生成的 $quiz_id_number ,然后最终形成如下所示的数组:

$omit_these_quizzes = array(8195,8193);

但是,我总是得到一个数组,它只包含最后一个 foreach 循环中的变量,而不是全部。我究竟做错了什么?

谢谢!

【问题讨论】:

  • 您的代码看起来不错,因此 $filtered_pass 仅包含一个 id,或者 $omit_these_quizzes 中的结果 好的,但是您以错误的方式检查/处理它.
  • 我相信你的代码应该可以正常工作,但你可以试试这个。 php.net/manual/en/function.array-push.php

标签: php arrays variables foreach


【解决方案1】:

这个作品?

$omit_these_quizzes = array();    
foreach ( $filtered_pass as $single_quiz ) {
    $quiz_id_number =  $single_quiz['quiz'];
    array_push($omit_these_quizzes, $quiz_id_number);
}

【讨论】:

  • 谢谢!它完全符合我的期望:-)
【解决方案2】:

看起来您正在每个循环中创建一个新数组,这就是为什么您最终会得到一个仅包含单个元素的数组... 使用:

$omit_these_quizzes = array();    
foreach ( $filtered_pass as $single_quiz ) 
{
    $quiz_id_number =  $single_quiz['quiz'];
    array_push($omit_these-quizzes, $quiz_id_number);
}

【讨论】:

  • 谢谢!这段代码正是我想要的。感谢您解释为什么我的旧版本不工作^_^
【解决方案3】:

您的代码看起来不错。但是如果您想要其他方法,请尝试以下操作:
有关in_arrayarray_push,请参见此处。

$omit_these_quizzes = array();    
foreach ( $filtered_pass as $single_quiz ) 
{
   $quiz_id_number =  $single_quiz['quiz'];
   if(!in_array($quiz_id_number ,$omit_these_quizzes))
   {
     array_push($omit_these_quizzes, $quiz_id_number);
   }
}

希望对你有帮助。

【讨论】:

  • 谢谢!我猜 if 语句会阻止我的数组在 id 上加倍?这似乎使事情保持干净整洁。感谢您的额外奖励:-)
  • 您添加的 if 语句在另一段代码中极大地帮助了我。再次感谢你。
  • 欢迎您,是的,if 语句可以防止重复输入。
【解决方案4】:

您的代码是正确的。通过调用 var_dump($filtered_pa​​ss); 检查您的 $filtered_pa​​ss 变量可能它只包含一个子数组。

【讨论】:

  • 我确实检查了我的 $filtered_pa​​ss 数组,尽管我使用 return print_r 来检查,而不是像你建议的那样 var_dump。 var_dump 是“正确”的检查方式吗?顺便说一句,确实有多个子数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2018-11-03
  • 1970-01-01
  • 2016-09-09
  • 2013-08-20
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多