扩展php数组参数功能的功能

时间:2013-05-02 15:51:14

标签: php jquery arrays string

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

//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();'
      . '    });'  ;

3 个答案:

答案 0 :(得分: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 .= '});';
}

答案 1 :(得分:2)

试试这个:

//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 .= ' ; ';

答案 2 :(得分:2)

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

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

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

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

});