Создайте массив PHP со строковыми и полученными 2-мерными массивами

1

У меня есть умная проблема в PHP, я строю массив со строкой, и в то же время я режу некоторые изображения. buildProject.php входит в index.php (session_start(), для _session находится на вершине).

buildProject.php

<?php
  $list_projet = array(
    0 => 'img0_pres',
    1 => 'img1_pres',
    2 => 'img2_pres',
  );
  $height_decoup = 500;
  $projet = array();

  foreach ($list_projet as $key => $value) {
    $name_source = $value;
    $img_source_file = 'images/projet/'.$name_source.'.jpg';
    $img_source = imagecreatefromjpeg($img_source_file);

    $width = imagesx($img_source);
    $height = imagesy($img_source);
    $ratio = ceil($height/$height_decoup);
    $img_dest_height = $height_decoup;

    $nb_img_decoup = 1;
    $img_source_y = 0;

    while ($nb_img_decoup <= $ratio) {
      if ($nb_img_decoup == $ratio) {
        $img_dest_height = $height - $height_decoup*($ratio-1);
      }
      $img_dest = imagecreatetruecolor($width,$img_dest_height);
      imagecopy($img_dest, $img_source, 0, 0, 0, $img_source_y, $width, $img_dest_height);
      $img_dest_file = 'images/projet/'.$name_source.'_'.$nb_img_decoup.'.jpg';
      imagejpeg($img_dest, $img_dest_file);

      $projet[$key][$nb_img_decoup] = $img_dest_file; // I SUPPOSE AN ERROR HERE
      $img_source_y += $height_decoup;
      $nb_img_decoup++;
    }
    imagedestroy($img_source);
    imagedestroy($img_dest);
  }
  echo $img_dest_file[0]; // give me an 'i' and suppose give me an error
  echo $projet[0][1][0]; // idem...

  $_SESSION['txt'] = $projet;
?>

После сборки я отправлю его на getProjet.php чтобы найти его на main.js с помощью getJSON. Моя проблема - $img_dest_file преобразование $img_dest_file только в массиве, и мне нужна строка!

Я думаю, проблема в buildProject.php но я помещаю другие файлы, возможно, есть и другая ошибка.

getProject.php

<?php
session_start();
$projet = $_SESSION['txt'];

if(isset($_GET['list']) && $_GET['list']>=0){
    echo json_encode($projet[$_GET['list']]);
} ?>

main.js

$.getJSON('php/getProject.php?list=' + index, function(data) {
    length = data.length;
    console.log(data+' //// '+length); // [object object] //// undefined
    console.log(data[1].length); // 29 (total of caracteres...)
    console.log(data[1]); // images/projet/img0_pres_1.jpg (I need that)
    console.log(data[1][0]); // i (But not that, here I want an error)
}

Поэтому в main.js data=([object object]) и мне нужны data=([object]). Я думаю, потому что, когда я запускаю buildProject.php $img_dest_file только преобразование в массиве, и это нормально, просто строка, а не массив.

Если у кого-то есть идея, почему $img_dest_file преобразовывается только в массив?

Главное, что мне нужно, это data.lengh, и это актуально неопределенно.

Спасибо за прочтение. Если у вас есть вопрос, я могу указать больше.

  • 0
    Как вы называете buildProject.php в вашем коде ??
  • 0
    Это включено в index.php
Показать ещё 4 комментария
Теги:
arrays

1 ответ

0

Я думаю, в то время как цикл повторяется до тех пор, пока "nb_img_decoup" не станет меньше или равен "отношению". Если этот цикл повторяется более одного раза для одного и того же "ключа", тогда он создаст несколько записей/индексов для одного и того же "ключа".

Вот почему при поиске $ projet [$ _ GET ['list']] возвращается несколько записей и, следовательно, [объект объекта].

  • 0
    Спасибо за Ваш ответ. Я просто сейчас провожу тест на прохождение, и у меня тот же результат. Я действительно думаю, что проблема заключается в том, что когда я строю массив, я строю двумерный массив и в результате получаю трехмерный массив.
  • 0
    Но если вы правы, как вы меня зовете построить массив?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню