Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带数组的php函数_Php_Arrays - Fatal编程技术网

带数组的php函数

带数组的php函数,php,arrays,Php,Arrays,我想将一个参数传递给一个函数,而不是多个参数,这些参数往往会意外增长。所以我想一个数组就能完成任务。这是我到目前为止起草的 <?php function fun_stuff($var){ // I want to parse the array in the function, and use } $my = array(); $my['recordID'] = 5; $my['name'] = 'John Smith'; $my['email'] = 'john@somee

我想将一个参数传递给一个函数,而不是多个参数,这些参数往往会意外增长。所以我想一个数组就能完成任务。这是我到目前为止起草的

<?php


function fun_stuff($var){
// I want to parse the array in the function, and use 


}


$my = array();
$my['recordID'] = 5;
$my['name'] = 'John Smith';
$my['email'] = 'john@someemail.com';

echo fun_stuff($my);

?>

我还没有完全掌握解析数组的概念。这是我学习的好方法。我通常传递相同的变量,但有时记录没有电子邮件地址,因此我确实需要为缺少密钥设置条件

到目前为止我做得对吗?我可以将数组作为参数传递给函数吗?
如果是这样,我如何解析和搜索现有的密钥

我不太确定你想要实现什么,但我怀疑是这样的:

$aPersons = array();
$aPersons[] = array('name' => 'name1', 'age' => 1);
$aPersons[] = array('name' => 'name2', 'age' => 2);

array_map('parsePerson', $aPersons);

function parsePerson($aPerson) {
    echo $aPerson['name'];
    echo $aPerson['age'];
}
当前数组的问题是它只有一个维度。 您可以简单地执行
echo$my['name']。不过,还有更简单的方法来解析数组

foreach($aPersons as $aPerson) {
    echo $aPerson['name'];
    echo $aPerson['age'];
}

$iLength = sizeof($aPersons);
for($i = 0; $i <= $iLength; $i++) {
    echo $aPersons[$i]['name'];
    echo $aPersons[$i]['age'];
}
foreach($aPerson作为$aPerson){
echo$aPerson['name'];
echo$aPerson[‘年龄’];
}
$iLength=sizeof($aperson);

对于($i=0;$i我不确定您想要实现什么,但我怀疑是这样的:

$aPersons = array();
$aPersons[] = array('name' => 'name1', 'age' => 1);
$aPersons[] = array('name' => 'name2', 'age' => 2);

array_map('parsePerson', $aPersons);

function parsePerson($aPerson) {
    echo $aPerson['name'];
    echo $aPerson['age'];
}
当前数组的问题是它只有一个维度。 您可以简单地执行
echo$my['name'];
。不过还有更简单的方法来解析数组

foreach($aPersons as $aPerson) {
    echo $aPerson['name'];
    echo $aPerson['age'];
}

$iLength = sizeof($aPersons);
for($i = 0; $i <= $iLength; $i++) {
    echo $aPersons[$i]['name'];
    echo $aPersons[$i]['age'];
}
foreach($aPerson作为$aPerson){
echo$aPerson['name'];
echo$aPerson[‘年龄’];
}
$iLength=sizeof($aperson);

对于($i=0;$i是的,您可以!只需传递数组并在函数内部使用foreach循环即可解析它

function myFunction($array)
{
  foreach($array as $value)
  {
    echo $value;
  }
}
或者,如果您希望完全控制配对键/值:

    function myFunction($array)
{
  foreach($array as $key=>$value)
  {
    echo "key:".$array[$key]."value:".$values;
  }
}

是的,您可以!只需传递数组,并在函数内部使用foreach循环来解析它

function myFunction($array)
{
  foreach($array as $value)
  {
    echo $value;
  }
}
或者,如果您希望完全控制配对键/值:

    function myFunction($array)
{
  foreach($array as $key=>$value)
  {
    echo "key:".$array[$key]."value:".$values;
  }
}

这是一个糟糕的设计实践,但这不是这里的问题。你可以像这样“解析”数组

if( array_key_exists( 'email', $var ))
{
   // use email field
}
foreach( $var as $key => $value )
{
   echo '$var[\''.$key.'\'] = '.$value;
}
如果你需要,你可以像这样循环所有元素

if( array_key_exists( 'email', $var ))
{
   // use email field
}
foreach( $var as $key => $value )
{
   echo '$var[\''.$key.'\'] = '.$value;
}

这是一个糟糕的设计实践,但这不是这里的问题。你可以像这样“解析”数组

if( array_key_exists( 'email', $var ))
{
   // use email field
}
foreach( $var as $key => $value )
{
   echo '$var[\''.$key.'\'] = '.$value;
}
如果你需要,你可以像这样循环所有元素

if( array_key_exists( 'email', $var ))
{
   // use email field
}
foreach( $var as $key => $value )
{
   echo '$var[\''.$key.'\'] = '.$value;
}

为了解析和查看,有一个重要的函数,它给出了数组的详细信息


调用函数时,您需要在末尾使用语法来解析您在返回中调用的任何内容。

要进行解析和查看,有一个significant函数提供数组详细信息


调用函数时,您需要在末尾使用语法来解析您在返回中调用的任何内容。

您显然可以将数组传递给函数。在函数中,您在赋值之前读取变量。如果您赋值:

$my['key'] = 'value';
在您使用的函数中:

echo $var['key'];

显然,您可以将数组传递给函数。在数组中,您在赋值之前读取变量。如果您赋值:

$my['key'] = 'value';
在您使用的函数中:

echo $var['key'];

为什么不使用
foreach
在数组中行走

function fun_stuff($var){
    foreach($var as $key => $item){
        echo '[', $key, "] => ", $item, "\n";
    }
}
$my = array();
$my['recordID'] = 5;
$my['name'] = 'John Smith';
$my['email'] = 'john@someemail.com';
fun_stuff($my);

为什么不使用
foreach
在数组中行走

function fun_stuff($var){
    foreach($var as $key => $item){
        echo '[', $key, "] => ", $item, "\n";
    }
}
$my = array();
$my['recordID'] = 5;
$my['name'] = 'John Smith';
$my['email'] = 'john@someemail.com';
fun_stuff($my);
是的,这是正确的(尽管您的问题有点宽泛)。在设置
$my
变量时,您已经通过索引引用了数组值。您可以在函数中执行相同的操作(使用
$var
变量)

我建议您看看PHP的所有内置数组函数:

是的,这是正确的(尽管您的问题有点宽泛)。在设置
$my
变量时,您已经通过索引引用了数组值。您可以在函数中做同样的事情(使用
$var
变量)


我建议您看看PHP的所有内置数组函数:

我不建议您为此使用数组。
您可以使用默认值定义可选参数:

//$name and $email are optional here
function fun($record_id, $name='', $email='')
{
    if (empty($name)) print '$name is empty';
}

//Usage:
fun(5, 'Robert');
fun(5);
fun(5, 'Robert', 'robert@gmail');
fun(3,'','robert@gmail');

如果您将使用数组,IDE将无法显示自动完成建议,这意味着更多的打字错误,您必须永远记住此数组的所有键或每次查看函数的代码。

我不建议您为此使用数组。
您可以使用默认值定义可选参数:

//$name and $email are optional here
function fun($record_id, $name='', $email='')
{
    if (empty($name)) print '$name is empty';
}

//Usage:
fun(5, 'Robert');
fun(5);
fun(5, 'Robert', 'robert@gmail');
fun(3,'','robert@gmail');

如果您使用数组,IDE将无法显示自动完成建议,这意味着更多的打字错误,您必须永远记住此数组的所有键或每次查看函数的代码。

是的,您走对了。我采取的方法是将必需参数作为第一个参数,将所有可选参数作为最后一个参数参数,它是一个数组

例如:

function fun_stuff($required1, $required2, $var = array()) {
   // parse optional arguments
   $recordId = (key_exists('recordID', $var) ? $var['recordId'] : 'default value');
   $name = (key_exists('name', $var) ? $var['name'] : 'default value');
   $email = (key_exists('email', $var) ? $var['email'] : 'default value');
}
然后您可以这样调用您的函数:

fun_stuff('val 1', 'val 2', array(
    'recordId' => 1,
    'name' => 'John',
    'email' => 'john@stackoverflow.com'
));

是的,你的思路是正确的。我采用的方法是将必需参数作为第一个参数,并将所有可选参数放在最后一个参数(数组)中

例如:

function fun_stuff($required1, $required2, $var = array()) {
   // parse optional arguments
   $recordId = (key_exists('recordID', $var) ? $var['recordId'] : 'default value');
   $name = (key_exists('name', $var) ? $var['name'] : 'default value');
   $email = (key_exists('email', $var) ? $var['email'] : 'default value');
}
然后您可以这样调用您的函数:

fun_stuff('val 1', 'val 2', array(
    'recordId' => 1,
    'name' => 'John',
    'email' => 'john@stackoverflow.com'
));
试试这个:

function fun_stuff($var){
// I want to parse the array in the function, and use 
    $fun_string = "";
    if( is_array( $var ) {
        if( array_key_exists( "name", $var ) )
            $fun_string .= "For " . $var["name"];
        else $fun_string .= "A nameless one ";
        if( array_key_exists( "email", $var ) )
            $fun_string .= " (email: " . $var["email"] . ")";
        else $fun_string .= " without a known e-mail address";
        if( array_key_exists( "recordID", $var ) )
            $fun_string .= " has record ID of " . $var["recordID"];
        else $fun_string .= " has no record ID set";
        $fun_string .= "\n";
   }
   return $fun_string;
}
试试这个:

function fun_stuff($var){
// I want to parse the array in the function, and use 
    $fun_string = "";
    if( is_array( $var ) {
        if( array_key_exists( "name", $var ) )
            $fun_string .= "For " . $var["name"];
        else $fun_string .= "A nameless one ";
        if( array_key_exists( "email", $var ) )
            $fun_string .= " (email: " . $var["email"] . ")";
        else $fun_string .= " without a known e-mail address";
        if( array_key_exists( "recordID", $var ) )
            $fun_string .= " has record ID of " . $var["recordID"];
        else $fun_string .= " has no record ID set";
        $fun_string .= "\n";
   }
   return $fun_string;
}

希望这离主题不太远……但听起来好像您只是在试图避免多个参数,而有些参数可能为NULL。因此,为了清晰起见,我建议您使用对象而不是数组……这样,就不会混淆应该存在哪些属性。如果您使用的是PHP 5,还可以强式键入参数r所以没有其他东西可以进入。所以:

class Record {
    public $Id;
    public $Name;
    public $Email
}

function fun_stuff( Record $record ) {
    // you will now have better intellisense if you use an IDE
    // and other develoers will be able to see intended parameters
    // clearly, while an array would require them to know what's
    // intended to be there.
    if( !empty($record->Email) ) {
        // do whatever.
    }
}

希望这离主题不太远……但听起来好像您只是在试图避免多个参数,而有些参数可能为NULL。因此,为了清晰起见,我建议您使用对象而不是数组……这样,就不会混淆应该存在哪些属性。如果您使用的是PHP 5,还可以强式键入参数r所以没有其他东西可以进入。所以:

class Record {
    public $Id;
    public $Name;
    public $Email
}

function fun_stuff( Record $record ) {
    // you will now have better intellisense if you use an IDE
    // and other develoers will be able to see intended parameters
    // clearly, while an array would require them to know what's
    // intended to be there.
    if( !empty($record->Email) ) {
        // do whatever.
    }
}

首先,请阅读!首先,请阅读!此外,您还需要确保很好地记录您的函数可选参数,因为很难看到哪些参数可以传递给函数…想象一下,如果您没有编写代码,您应该能够理解函数的功能,而无需阅读完整的它。你还需要确保你的文件很好