Вот кое-что интересное, что я только что узнал о str_replace ().В моей функции мне нужно сделать два одинаковых запроса MySQL с небольшим изменением в сортировке результата.В качестве аргумента я получаю строку, содержащую предложение, например, «фамилия ASC», но это может быть и «фамилия DESC».Теперь я хотел легко переключиться на обратную сортировку, используя str_replace, и я подумал, что это должно сработать:
str_replace(array('ASC', 'DESC'), array('DESC', 'ASC'), $subject)
На мой взгляд, это должно изменить все вхождения ASC с DESC и все вхождения DESC с ASC.Поскольку строка содержит только одну из двух, я должен получить предложение в обратном порядке.Однако, это не так.Вывод приведенного выше кода является той же строкой.
Я провел некоторое тестирование, и выяснилось, что эти вызовы делают то, что вы от них хотите:
str_replace('ASC', 'DESC', $subject)
str_replace(array('ASC'), array('DESC'), $subject)
По-моему, это странно, потому что
array('ASC', 'DESC') != array('DESC', 'ASC')
Почему тогда PHP будет считать это равным?Есть ли другой способ сделать этот вид замены легко?