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