Хорошо, я хочу сделать что-то вроде этого:
$which = !empty($param_id) ? "['groups'][$param_id]" : "['groups']";
И чем бы я хотел, чтобы у меня была возможность делать что-то вроде этого ...
$all_groups . $which = array(
-1 => array(
'id' => '-1',
'name' => $txt['parent_guests_only'],
'checked' => in_array('-1', $checked) || in_array('-3', $checked),
'is_post_group' => false,
)
И мне нужно, чтобы построить массив так, если !empty($param_id)
$all_groups['groups'][$param_id] = array(the array info);
Но если $ param_id пуст, он должен сделать следующее:
$all_groups['groups'] = array(the array info);
Не думаю, что смогу это объединить или могу?
Может кто-нибудь помочь мне здесь? Это происходит много-много раз в функции, поэтому я не хочу использовать операторы if ... else ... каждый раз. Было бы слишком много, если подумать о 1 быстром подходе ко всем из них.
Спасибо:)
РЕДАКТИРОВАТЬ, вот эта функция:
function ListGroups($checked = array(), $unallowed = array(), $order = array(), $param_id = 0)
{
global $context, $smcFunc, $txt;
// We'll need this for loading up the names of each group.
if (!loadLanguage('ManageBoards'))
loadLanguage('ManageBoards');
if (empty($checked))
return array();
$all_groups['groups'][$param_id] = array();
if (!in_array('-1', $unallowed))
// Guests
$all_groups['groups'][$param_id] = array(
-1 => array(
'id' => '-1',
'name' => $txt['parent_guests_only'],
'checked' => in_array('-1', $checked) || in_array('-3', $checked),
'is_post_group' => false,
)
);
if (!in_array('0', $unallowed))
{
// Regular Members
if (!empty($all_groups['groups']))
$all_groups['groups'][$param_id] += array(
0 => array(
'id' => '0',
'name' => $txt['parent_members_only'],
'checked' => in_array('0', $checked) || in_array('-3', $checked),
'is_post_group' => false,
)
);
else
$all_groups['groups'][$param_id] = array(
0 => array(
'id' => '0',
'name' => $txt['parent_members_only'],
'checked' => in_array('0', $checked) || in_array('-3', $checked),
'is_post_group' => false,
)
);
}
// Load membergroups.
$request = $smcFunc['db_query']('', '
SELECT group_name, id_group, min_posts
FROM {db_prefix}membergroups
WHERE id_group > {int:is_zero}',
array(
'is_zero' => 0,
)
);
while ($row = $smcFunc['db_fetch_assoc']($request))
{
if (!in_array($row['id_group'], $unallowed))
{
$all_groups['groups'][(int) $param_id][(int) $row['id_group']] = array(
'id' => $row['id_group'],
'name' => trim($row['group_name']),
'checked' => in_array($row['id_group'], $checked) || in_array('-3', $checked),
'is_post_group' => $row['min_posts'] != -1,
);
}
}
$smcFunc['db_free_result']($request);
// Let's sort these arrays accordingly!
if (!empty($order))
{
$all_groups['groups'][$param_id] = sortGroups($all_groups['groups'][$param_id], $order);
$context['group_order' . $param_id] = implode(', ', $order);
}
else
{
$context['group_order' . $param_id] = '';
sort($all_groups['groups'][$param_id]);
$x = 0;
foreach ($all_groups['groups'][$param_id] as $key => $value)
{
$x++;
$context['group_order' . $param_id] .= $x < count($all_groups['groups'][$param_id]) ? $value['id'] . ', ' : $value['id'];
}
}
return $all_groups['groups'][$param_id];
}
Мне нужно проверить! Empty ($ param_id), если это так, нужно построить массив $ all_groups ['groups'] без $ param_id.
Поэтому необходимо добавить проверку для if (!empty($params_id))
построения массива следующим образом: $all_groups['groups'][$params_id]
иначе построить его следующим образом: $all_groups['groups']
. Я не хочу, чтобы здесь было несколько операторов if ... else ..., просто 1 или 5 лайнер были бы БОЛЬШИМИ!
Спасибо, ребята:)