php变量从url到函数,返回错误[duplicate]

ppcbkaq5  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(109)

此问题在此处已有答案

Callback function using variables calculated outside of it(2个答案)
How to pass multiple variables from global scope into callback scope? [duplicate](1个答案)
两年前关闭了。
我可以回显species和bone变量,但是当我将它们放入下面的代码中时,我得到Notice: Undefined variable: species in <filename>

$species = $_GET['species'];
  echo $species ;

  $bone = $_GET['bone'];
  echo $bone ;

  function myfilter($row){
      return ($row['commonName']== $species && $row['elementName']==$bone);
  }
  $result = array_filter($data, 'myfilter');
jgovgodb

jgovgodb1#

您的方法不会实现您想要实现的目标。当您使用myfilter作为array_filter的回调函数时,它不会获取该函数外部的变量。这就是为什么speciesbone变量会触发注意。您需要通过使用超级全局$_GET(我不喜欢这样)或者像下面这样在array_filter的回调中传递species,bone。

使用超级全局

<?php

function myfilter($row){
      return ($row['commonName'] == $_GET['species'] && $row['elementName'] == $_GET['bone']);
  }
  
$result = array_filter($data, 'myfilter' );

回调中传递变量

<?php

$species = $_GET['species'];
$bone = $_GET['bone'];

$result = array_filter($data, function ( $row ) use ( $species, $bone )
{
return ($row['commonName'] == $species && $row['elementName'] == $bone );
});

相关问题