扩展php数组参数函数的功能[关闭]

Posted

技术标签:

【中文标题】扩展php数组参数函数的功能[关闭]【英文标题】:extend functionality of php array parameter function [closed] 【发布时间】:2013-04-26 21:12:30 【问题描述】:

假设我有一个给定数组的函数,它返回一段代码,例如

//the array
$arr = array("EAL"   => "Eal",
         "CAZO"  => "Cazo",
         "COS"   => "Cos"           
        );

$result = '';
foreach ($arr as $key => $value)
    $result .= ' $("'.$key.'").click(function()  '
        . '        $("'.$value.'").fadeToggle();'
        . '  );'  

$result .= ' ; ';

看起来像

$result=' $("#EAL").click(function()  '
      . '   $("#Eal").fadeToggle();'
      . '    );'
      . ' $("#CAZO").click(function()  '
      . '   $("#Cazo").fadeToggle();'
      . '    );'
      . ' $("#COS").click(function()  '
      . '   $("#Cos").fadeToggle();'
      . '    );'  ;

现在,当我对一个键有多个值时,我该如何完成这种情况,例如:

$("#CAZO").click(function()  
   $("#Cazo_x").fadeToggle();
   $("#Cazo_y").fadeToggle();
   $("#Cazo_z").fadeToggle();
);

所以最终结果是

$result=' $("#EAL").click(function()  '
      . '   $("#Eal").fadeToggle();'
      . '    );'
      . ' $("#CAZO").click(function()  '
      . '   $("#Cazo_x").fadeToggle();'
      . '   $("#Cazo_y").fadeToggle();'
      . '   $("#Cazo_z").fadeToggle();'
      . '    );'
      . ' $("#COS").click(function()  '
      . '   $("#Cos").fadeToggle();'
      . '    );'  ;

【问题讨论】:

【参考方案1】:

使用类来避免所有重复的代码。然后你可以这样做:

$(".fadeThis").on('click', function()

  // the ID of the element is available as this.id
  $(this).fadeToggle();      

  // $(this).children() to get the children...

);

【讨论】:

你能举一个在代码上使用它的例子吗? 当然可以,但是 html 标记看起来如何?并将你想要的元素指向fadeToggle 我有像jsfiddle.net/davidThomas/UpX3L/1这样的输入字段 见:jsfiddle.net/UpX3L/143 您的回答非常好,但是如果我单击一个链接,如何显示/隐藏 2 个或更多 div?【参考方案2】:
$arr = [
    'EAL'  => 'Eal',
    'CAZO' => [
        'Cazo_x',
        'Cazo_y',
        'Cazo_z'
    ],
    'COS'  => 'Cos'           
];

$result = '';
foreach($arr as $key => $value) 
    $result .= '$("'.$key.'").click(function() ';
    if(!is_array($value))  $value = [$value]; 
    foreach($value as $v) 
        $result .= '$("'.$v.'").fadeToggle();'
    
    $result .= ');';

【讨论】:

【参考方案3】:

试试这个:

//the array
$arr = array("EAL"   => "Eal",
     "CAZO"  => "Cazo",
     "COS"   => "Cos","key2" =>array("value1","value2")          
    );

$result = '';
foreach ($arr as $key => $value)
$result .= ' $("'.$key.'").click(function()  ';
    if( is_array( $value ))
        foreach( $value as $val )
        
           $result .='        $("'.$val.'").fadeToggle();'
        
    else
      $result .= '        $("'.$value.'").fadeToggle();'

    
    $result .= '  );'  

$result .= ' ; ';

【讨论】:

以上是关于扩展php数组参数函数的功能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

php:来自“ClassName”的新对象和参数数组

PHP函数数组

PHP-CPP开发扩展

在php类方法中使最后一个数组参数可选(C)

深入理解php内核 编写扩展 II:参数数组和ZVALs

php 学习笔记--数组篇