PHP — Как я могу переписать этот раздел, чтобы он был более профессиональным?

#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'>";