【问题标题】:Using PHP functions to add value into an array使用 PHP 函数将值添加到数组中
【发布时间】:2016-01-26 06:47:12
【问题描述】:

我想要一个快速的帮助。不知道我在哪里错过了一些东西。我正在尝试使用函数将新学校添加到名为 Schools 的数组中,这样每当有人传入一个值时,它就会成为学校数组的一部分。

查看代码:

$schools = array("Johnson's College", "Oxford School of Ham");
echo count($schools);

function addSchools ($newSchool){
     $schools[count($schools)] = $newSchool;
     return $newSchool;
}
addSchool("Harvard Business School");

foreach($schools as $key){
  echo $key;
}

foreach 语句只是为了验证是否添加了新学校:“哈佛商学院...”。但它给出了一个错误。

任何帮助解决这个问题,这样当我使用 foreach 循环遍历数组时,我会看到所有内容都没有错误。

谢谢。

【问题讨论】:

  • 听起来你想要array_push()。见documentation
  • 你遇到了什么错误?
  • foreach 语句从不使用大括号预先开始或后结束
  • 函数不会改变$schools变量。阅读范围。
  • @Louis 你应该使用 array_push() 看我的回答。你不需要创建另一个函数来为你的数组添加另一个值,因为 php 已经有了 array_push。

标签: php arrays


【解决方案1】:

只需添加使用:

$schools[]= $newSchool;

或者使用array_push函数

如果您使用 array_push() 向数组添加一个元素,最好使用 $array[] =,因为这样不会调用函数的开销。

您可以将 $schools 设为全局变量或通过引用传递它:

function addSchools (&$newSchool){
     $schools[count($schools)] = $newSchool;
     return $newSchool;
}

Passing values by reference

【讨论】:

  • 是的,我在发表评论之前尝试了 $schools[]= $newSchool,但还是不行……
  • 好的。因此,在用户想要通过添加多个学校来展示其学校作品集的网页上,数组推送将如何提供帮助?请记住,在这种情况下存在不同的站点用户。
  • array_push($schools,"school1","school2","school3"); :·) ?
【解决方案2】:

尝试使用array_push(); 这会将其添加到数组的末尾。

$schools = array("Johnson's College", "Oxford School of Ham");
echo count($schools);

function addSchools ($schools, $newSchool){ array_push($schools, $newSchool); $schools[count($schools)] = $newSchool; return $newSchool; } addSchool("Harvard Business School");

{foreach($schools as $key){ echo $key; }

【讨论】:

    【解决方案3】:

    你不需要创建另一个函数来添加另一个值到你的数组中,你可以像这样使用array_push()

    <?php 
    
    $schools = array("Johnson's College", "Oxford School of Ham");
    
    array_push($schools, "Harvard Business School");
    
    print_r($schools);
    

    【讨论】:

      【解决方案4】:

      你调用函数addSchool("Harvard Business School"); 但函数名称是addSchools。而在函数addSchools变量$schools是全局的,所以你的函数必须是这样的:

      function addSchools ($newSchool){
      global $schools;
      $schools[count($schools)] = $newSchool;
      return $newSchool;
      

      }

      【讨论】:

      • 这行得通。但是我想问一下,通过在数组 $schools 之前使用关键字 global,这不会使用户学校可见吗?我仍然想只对那个用户保密。
      • 如果你不想使用全局,传递 $schools 作为参数:function addSchools ($newSchool, $schools){ $schools[count($schools)] = $newSchool; return $newSchool; addSchools("Harvard Business School", $schools);
      • @Louis:不,这不是关键字 global 的用途。函数外部定义的变量在所述函数中不可用。使用关键字 global 可以使函数范围内的变量可用。更好的选择是通过引用将其作为参数传递。阅读 php.net 上的参考资料。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2014-01-03
      相关资源
      最近更新 更多