Php 如何循环遍历数组并为每个数组调用函数?

Php 如何循环遍历数组并为每个数组调用函数?,php,arrays,Php,Arrays,我有一个数组需要循环,对于特定的键,我需要调用chopActNum函数。该函数获取一个帐号,并将其转换为“XXXXXXXXX 1234”格式。然后我想显示这个新格式,而不是整个帐号。My$accountList保存帐户的所有信息。我的困惑在于,我目前通过Smarty模板中的分配显示我的所有帐户信息。我很难解释,所以看到我的代码可能有助于阐明我的问题。 我的职能: public function chopActNum($actNum=0){ $numPlace=strlen($actNu

我有一个数组需要循环,对于特定的键,我需要调用chopActNum函数。该函数获取一个帐号,并将其转换为“XXXXXXXXX 1234”格式。然后我想显示这个新格式,而不是整个帐号。My
$accountList
保存帐户的所有信息。我的困惑在于,我目前通过Smarty模板中的分配显示我的所有帐户信息。我很难解释,所以看到我的代码可能有助于阐明我的问题。
我的职能:

public function chopActNum($actNum=0){

    $numPlace=strlen($actNum)-4;
    $repeatX=str_repeat('x',$numPlace);
    $actNumConcat=$repeatX.substr($actNum, -4); 
    return $actNumConcat;
Php:

第三方物流代码:

{foreach from=$accountList item=v name=foo} 
<td class="tableData">{$v.actName}</td>
<td class="tableData">{$v.actNum}</td>
<td class="tableData">{$v.bankRoute}</td>
{/foreach}
{foreach from=$accountList item=v name=foo}
{$v.actName}
{$v.actNum}
{$v.bankRoute}
{/foreach}

使用数组映射为模板准备数据,如下所示:

$achList = arrar_map(function($v){
  return array(
    'actName' => $v['actName'],
    'actNum' => chopActNum($v['actNum']),
    'bankRoute' => $v['bankRoute']
  );
}, $achList);

您可以在
foreach
中获取密钥,然后检查它是否是特定密钥之一

$specific_keys = array(...);
foreach ($achList as $key => $acct) {
    if (in_array($key, $specific_keys)) {
        $actNum[] = chopActNum($acct['actNum']);
    } else {
        $actNum[] = $acct['actNum'];
    }
}

你怎么知道它是不是应该调用
chopActNum
的特定键之一?我不明白。在php代码中,您得到了$chopNum,但您从未用它做过任何事情。难道你不想在你的循环中做这样的事情:
$a['chopNum']=$chopNum
$a['actNum']=$chopNum
?如果您这样做了,请记住将&reference标记放在$a上,即:
foreach($achList as&$a)
或者您更改了循环中$a的内容,但在循环完成后更改不会返回。我在周末找到了一个解决方案,但感谢大家的帮助!对于($x=0;$xchopActNum($actNum);$achList[$x]['ACCOUNTUMDISPLAY']=$chopNum;}
$specific_keys = array(...);
foreach ($achList as $key => $acct) {
    if (in_array($key, $specific_keys)) {
        $actNum[] = chopActNum($acct['actNum']);
    } else {
        $actNum[] = $acct['actNum'];
    }
}