如何计算php中的每个字段

时间:2013-11-16 10:35:53

标签: php

我有以下代码:

function cat_fields($fields)
{
global $cfg;
$fields['cat_furl'] = str_replace('%cat_safename%', $fields['cat_safename'], $cfg->getVar('urlformat_cat'));
$fields['cat_furl'] = $cfg->getVar('site_url') . str_replace('{cat_safename}', $fields['cat_safename'], $fields['cat_furl']);
$fields['cat_flink'] = '<a id="a'  . count($fields) .  '" href="' . $fields['cat_furl'] . '" title="' . $fields['cat_title'] . '">' . $fields['cat_name'] . '</a>';
return $fields;
}

我正在尝试使用$fields['cat_flink'] = '<a id="a' . count($fields) . '"计算id="a' . count($fields) . '"的每个字段,但它会返回字段总数而不是计算它们。我如何算他们EACH

应该是

<a id="a1"....>
<a id="a2"....>
相反,它回应了我

<a id="15"....>
<a id="15"....>
..... and so on

请帮我解决这个问题。

5 个答案:

答案 0 :(得分:2)

您正在尝试计算所有数组中的字段;引自PHP Manual

  

计算数组中的所有元素或对象中的某些元素。

要获得索引(即您要查找的数字),您必须设置一个起始编号并循环遍历所有字段,直到您完成所有字段,并在每次遍历循环时增加该编号。

然而,您的方法似乎只进行了一次迭代,这意味着您必须将您的号码存储在其他位置。一个好方法是将数字作为参数添加到你的函数中:

function cat_fields($fields, $number)
{
global $cfg;
$fields['cat_furl'] = str_replace('%cat_safename%', $fields['cat_safename'], $cfg->getVar('urlformat_cat'));
$fields['cat_furl'] = $cfg->getVar('site_url') . str_replace('{cat_safename}', $fields['cat_safename'], $fields['cat_furl']);
$fields['cat_flink'] = '<a id="a'  . $number .  '" href="' . $fields['cat_furl'] . '" title="' . $fields['cat_title'] . '">' . $fields['cat_name'] . '</a>';
return $fields;
}

完成后你应该编辑你用来多次调用函数的循环(我猜):

for ($i = 1; $i < count($yourArray); $i++) {
    // code
    $foo = cat_fields($yourArray, $i);
    // more code
}

希望有所帮助。

修改

我已经从第131-141行编辑了pastebin:

if(($rs = $db->execute($sql)) && (!$rs->EOF))
{
    $i = 1;
    while(!$rs->EOF)
    {
        $rs->fields = seoscripts_prepare_cat_fields($rs->fields, $i);

        $tpl->assign_array_d('tool_category_row', $rs->fields);
        $tpl->parse_d('tool_category_row');
        $rs->MoveNext();
        $i += 1;
    }
}

答案 1 :(得分:0)

像那样count($fields)计数会返回你需要添加一个整数的字段数i=0;

并增加i++;

答案 2 :(得分:0)

试试这个

function cat_fields($fields)
{
global $cfg;
$fields['cat_furl'] = str_replace('%cat_safename%', $fields['cat_safename'], $cfg->getVar('urlformat_cat'));
$fields['cat_furl'] = $cfg->getVar('site_url') . str_replace('{cat_safename}', $fields['cat_safename'], $fields['cat_furl']);
$str = '';
$i = 0;
foreach($fields as $field)
{
   $str . = '<a id="a'  . $i .  '" href="' . $fields['cat_furl'] . '" title="' . $fields['cat_title'] . '">' . $fields['cat_name'] . '</a>';
   $i++;
}
$fields['cat_flink'] = $str;
return $fields;
}

答案 3 :(得分:0)

试试这个

    function cat_fields($fields)
        {
        global $cfg;
        $fields['cat_furl'] = str_replace('%cat_safename%', $fields['cat_safename'], $cfg->getVar('urlformat_cat'));
        $fields['cat_furl'] = $cfg->getVar('site_url') . str_replace('{cat_safename}', $fields['cat_safename'], $fields['cat_furl']);
$i=0;
        foreach($fields as $field)
        {
           $fields['cat_flink'] = '<a id="a'.$i.'" href="' . $field['cat_furl'] . '" title="' . $field['cat_title'] . '">' . $field['cat_name'] . '</a>';
i++;
        }
        return $fields;
        }

答案 4 :(得分:0)

如果您正在计算数组,那么

echo count($ array);

将给出数组中每个元素的计数。