我有以下代码:
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
请帮我解决这个问题。
答案 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);
将给出数组中每个元素的计数。