@Jony1337

Как записать разные значения в двух переменых из for в php?

Hello
есть у меня такой код
$arr = array ('imgk','imgkk');
for ($i=0;$i < count($arr);++$i) {
$x = $arr [$i];
$FileName = $_FILES[$x]['name'];
$TempName = $_FILES[$x]['tmp_name'];
$length = 15;
  $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
  $numChars = strlen($chars);
  $string = '';
  for ($ik = 0; $ik < $length; $ik++) {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
  }
 $final = $string.".png";
 $finalTwo = 'img/'.$final;
include_once('classSimpleImage.php');
   $image = new SimpleImage();
   $image->load($TempName);
   $image->resizeToWidth(250);
   $image->save($finalTwo); 
}

как сделать что бы в $adImage1 было первое значение $finalTwo а в $adImage2 второе значение $finalTwo
Так код генерирует рандом названия для фоток , For будет выполнятся 2 раза то есть должно быть примерно так :
$adImage1 = $finalTwo (значение первого выполнения For)
$adImage2 = $finalTwo (значение второго выполнения For)
как то так , это возможно сделать в PHP или нет если да буду рад любому совету
  • Вопрос задан
  • 199 просмотров
Решения вопроса 3
coderisimo
@coderisimo
просто идеи.
а если использовать просто массив ?
$finalTwo = [];
//................. твой код
$finalTwo[] = 'img/'.$final;

тогда $finalTwo[0] - первое значение, $finalTwo[1] - второе.

если нужны именно переменные , то , думаю можно вот так :

$finalTwo = []; 
//****************твой код
$finalTwo['adImage'. ($i+1)] = 'img/'.$final;


зачем юзай extract() - она сделает из массива переменные.
Ответ написан
Комментировать
@kuftachev
Совет - прочитать книгу "Чистый код"(начиная с того, что вообще не понятно, что куча констант делают в теле цикла).
Тут принципиально именно то, о чем Вы написали или можете сформулировать задачу в принципе, если будет другое решение?

UPD. По стилю кода, $FileName - вообще не используется. $length, $chars, $numChars - константы и их не дело помещать в цикл. $final = $string.".png" и $finalTwo = 'img/'.$final лучше взять префикс и суффикс и опять-таки вынести за цикл. include_once конечно будет включен только один раз, но он будет каждый раз проверять, включен или нет - тоже за цикл. Если все-таки использовать эту идею, то можно создать несколько функций, например одна получает запрос, вторая генерирует имя, а третья сохраняет файл.

И еще, менять строку в цикле - это преступление, на него нужно идти осознанно! Это явно не тот случай, когда это стоило бы делать.

А вот то, как правильно генерировать уникальное имя файла:
www.elisdn.ru/blog/19/generaciia-unikalnogo-imeni-faila
Ответ написан
Комментировать
no_one_safe
@no_one_safe
Нужны уникальные имена загружаемых файлов? смотрите в сторону
$unique_image_name = md5(time().SITE_SALT.$user_id);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы