#php
#php
Вопрос:
Как я могу переписать этот раздел, чтобы он был более профессиональным? Может быть, есть какой-то способ объединить средние 6 строк в 1 строку?
if($hyperlink){
$hyperlink_new=$hyperlink;
$hyperlink_new=str_replace("row[0]", $row[0], $hyperlink_new);
$hyperlink_new=str_replace("row[1]", $row[1], $hyperlink_new);
$hyperlink_new=str_replace("row[2]", $row[2], $hyperlink_new);
$hyperlink_new=str_replace("row[3]", $row[3], $hyperlink_new);
$hyperlink_new=str_replace("row[4]", $row[4], $hyperlink_new);
$hyperlink_new=str_replace("row[5]", $row[5], $hyperlink_new);
echo "<a href="$hyperlink_new">";
}
Спасибо.
Комментарии:
1. Каково содержание
$row
?
Ответ №1:
if($hyperlink){
$hyperlink_new=$hyperlink;
for ($i=0; $i<6; $i =1) {
$hyperlink_new=str_replace("row[$i]", $row[$i], $hyperlink_new);
}
echo "<a href="$hyperlink_new">";
}
Ответ №2:
Добавить цикл?
if($hyperlink){
$hyperlink_new=$hyperlink;
for ($i=0; $i <= 5; $i ) {
$hyperlink_new=str_replace("row[$i]", $row[$i], $hyperlink_new);
}
echo "<a href="$hyperlink_new">";
}
Ответ №3:
Предполагая, что $row был заполнен mysql_fetch_row(), вы можете использовать возможность str_replace для получения массивов в качестве параметров.
if($hyperlink){
$hyperlink_new = str_replace(
array("row[0]", "row[1]", "row[2]", "row[3]", "row[4]", "row[5]"),
$row,
$hyperlink
);
echo "<a href="$hyperlink_new">";
}
Ответ №4:
Просто ради интереса, вот как это сделать, используя регулярное выражение и анонимный обратный вызов функции. Вероятно, подходит только для php > = 5.3.0
$link = 'row[0] - row[1] - row[2] - row[3]';
$rows = array( 'zero', 'one', 'two', 'three' );
$link = preg_replace_callback( "/row[(d )]/i", function( $matches ) use( $rows ) { return $rows[$matches[1]]; }, $link );
echo "<a href='$link'>";