Ітэрацыі над PHP масіва ўнутры цыклу Javascript

У мяне паўсталі некаторыя праблемы, спрабуючы перабраць PHP масіва ўнутры масіва Javascript ... Я шукаў праз форум і, хоць я знайшоў некалькі паведамленняў пра капіяванне значэнняў PHP для значэнняў Javascript, я не магу знайсці менавіта тое, што Я спрабую дамагчыся ...

У мяне ёсць PHP масіў масіваў, званых «phpArray», і я хачу кожнае значэнне гэтага масіва павінны быць скапіяваныя ў масіў Javascript масіваў (так званы «JavaArray»). У мяне ёсць цыкл Javascript, які запаўняе масіў Javascript, калі «phpArray» прыходзіць пусты, і я проста спрабую выкарыстоўваць індэкс PHP для ітэрацыі над «phpArray». Тым не менш, ён дзейнічае, як калі індэкс PHP ніколі не павялічваецца, а толькі значэнне масіва, што я магу атрымаць першы адзін з «phpArray» ... Вось кавалак кода, які адпавядае гэтаму:

for (var i = 0; i < javaArray.length; i++) {
    javaArray[i] = new Array(<?php echo $numCols; ?>);

    for (var j = 0; j < javaArray[i].length; j++) {
        javaArray[i][j] = "0";

        <?php 
        if(sizeof($javaArray) > 0)
        {
            ?>
            javaArray[i][j] = "<?php echo $phpArray[$i][$j]; ?>";
            <?php
        }
        ?>
    }
}

Любая ідэя аб тым, як я магу гэта зрабіць?

Загадзя дзякуй за ваш час і намаганні! :)

1
Нахільныя вы проста JSON закадаваць яго: JavaArray =
дададзена аўтар sroes, крыніца
Нахільныя вы проста JSON закадаваць яго: JavaArray =
дададзена аўтар sroes, крыніца
Я быў літаральна толькі пра тое, каб адказаць, што @sroes - вы павінны дадаць яго ў якасці адказу - атрымаў мой upvote :)
дададзена аўтар LeonardChallis, крыніца
Я быў літаральна толькі пра тое, каб адказаць, што @sroes - вы павінны дадаць яго ў якасці адказу - атрымаў мой upvote :)
дададзена аўтар LeonardChallis, крыніца
паўтараючы масіў не дасць вам патрэбныя значэнні. паспрабаваць json_encode гэтага масіва, а затым пакласці, што ў значэнне яваскрипта затым запусціць цыкл на гэтым яваскрипт значэння
дададзена аўтар Rohit Kumar Choudhary, крыніца
Справа ў тым, што PHP працуе на сэрвэры, у той час як Javascript запускаецца на кліенцкім браўзэры (пасля таго, як PHP-код быў выкананы і скончаны).
дададзена аўтар piotr_cz, крыніца
Справа ў тым, што PHP працуе на сэрвэры, у той час як Javascript запускаецца на кліенцкім браўзэры (пасля таго, як PHP-код быў выкананы і скончаны).
дададзена аўтар piotr_cz, крыніца
Ужо адказаў у PHP для javascript"> stackoverflow.com/questions/5618925/…
дададзена аўтар Nish, крыніца
Ужо адказаў у PHP для javascript"> stackoverflow.com/questions/5618925/…
дададзена аўтар Nish, крыніца
Гэта не будзе працаваць такім чынам. Вы павінны разумець розныя паміж боку сервера сцэнарыяў і кліенцкіх моў сцэнарыяў на баку. У кодзе код PHP будзе выконвацца да таго, як прыходзіць у браўзэр. Затым код Javascript будзе выкананы. Такім чынам, вы павінны перадаць PHP масіў Javascript кода з дапамогай AJAX затым апрацаваць яго. "<? PHP Эхо $ phpArray [$ я] [$ J];?>"; Тут я і J нічога не значыць, калі выконваецца на баку сервера.
дададзена аўтар Nish, крыніца
Гэта не будзе працаваць такім чынам. Вы павінны разумець розныя паміж боку сервера сцэнарыяў і кліенцкіх моў сцэнарыяў на баку. У кодзе код PHP будзе выконвацца да таго, як прыходзіць у браўзэр. Затым код Javascript будзе выкананы. Такім чынам, вы павінны перадаць PHP масіў Javascript кода з дапамогай AJAX затым апрацаваць яго. "<? PHP Эхо $ phpArray [$ я] [$ J];?>"; Тут я і J нічога не значыць, калі выконваецца на баку сервера.
дададзена аўтар Nish, крыніца

7 адказы

Вы павінны выкарыстоўваць json_encode :

javaArray = <?php echo json_encode($phpArray) ?>;
6
дададзена
Сардэчна запрашаем =)
дададзена аўтар sroes, крыніца
Як JavaArray друкуецца ўнутры тэкставага поля?
дададзена аўтар sroes, крыніца
Падзякі sroes, гэта спрацавала! Я пазначыў яго як «прынята»! У мяне дзіўныя паводзіны ў цяперашні час: часам «JavaArray» павінен быць ініцыяваны поўны «0», а часам ён павінен быць скапіяваны з «phpArray». Затым яна «друкуецца» ўнутры HTML TEXTAREA. Калі JavaArray ініцыялізуецца поўны "0", то TEXTAREA запаўняюцца без дадатковага прасторы паміж лініямі; Аднак, калі ён ініцыялізуецца праз «phpArray», друкуецца з якой-то «двайны» прасторы паміж лініямі. Я шукаў дзіўныя сімвалы ўнутры масіва, але я не знайшоў нічога ... Любую ідэю аб тым, што можа адбывацца? Дзякуй! :)
дададзена аўтар Johanovski, крыніца
Ой! Nevermind, я толькі што знайшоў запасны «\ п», надрукаваным у кожным канцы лініі ... Цяпер ён выдатна працуе: дзякуй, sroes! : D
дададзена аўтар Johanovski, крыніца

Вы павінны выкарыстоўваць json_encode :

javaArray = <?php echo json_encode($phpArray) ?>;
6
дададзена
Сардэчна запрашаем =)
дададзена аўтар sroes, крыніца
Як JavaArray друкуецца ўнутры тэкставага поля?
дададзена аўтар sroes, крыніца
Падзякі sroes, гэта спрацавала! Я пазначыў яго як «прынята»! У мяне дзіўныя паводзіны ў цяперашні час: часам «JavaArray» павінен быць ініцыяваны поўны «0», а часам ён павінен быць скапіяваны з «phpArray». Затым яна «друкуецца» ўнутры HTML TEXTAREA. Калі JavaArray ініцыялізуецца поўны "0", то TEXTAREA запаўняюцца без дадатковага прасторы паміж лініямі; Аднак, калі ён ініцыялізуецца праз «phpArray», друкуецца з якой-то «двайны» прасторы паміж лініямі. Я шукаў дзіўныя сімвалы ўнутры масіва, але я не знайшоў нічога ... Любую ідэю аб тым, што можа адбывацца? Дзякуй! :)
дададзена аўтар Johanovski, крыніца
Ой! Nevermind, я толькі што знайшоў запасны «\ п», надрукаваным у кожным канцы лініі ... Цяпер ён выдатна працуе: дзякуй, sroes! : D
дададзена аўтар Johanovski, крыніца

Згодна з каментарам (чаму б не выкарыстоўваць кадыроўку JSON?) Сувязь паміж JS і PHP толькі ў адным кірунку, так што вам трэба, каб стварыць поўны код JS ў PHP.

Я прапаную рабіць нешта накшталт (аднамерны масіў для яснасці):

// this is PHP code
echo "var JavaArray = array(";//this echoes declaration of JavaScript array
foreach($phpArray as $item){//this starts iterating PHP array
  echo $item.', ';//this "copies" PHP array item to JavaScript array item
}
echo ')';//close JS declaration of array

Гэта на самай справе не з'яўляецца дасканалым, так як ён пакідае , на заканчэнне, але вы атрымаеце ідэю. Увесь код JS павінен быць выхад на PHP.

0
дададзена

Як было адзначана ў каментарах, гэта будзе працаваць толькі калі Javascript генеруецца з .php старонкі. Калі гэта .js сцэнар, ён не будзе працаваць.

Самы просты спосаб

var javaArray = <?php echo json_encode($phpArray) ?>;

як гэта было прапанавана іншымі.

Прычына, чаму вы код не працуе ў тым, што ў вас ёсць яваскрипт цыкл, а не PHP цыклу. У PHP, вы можаце зрабіць гэта:

var javaArray = [];
<?php
  for ($i=0; $i < count($phpArray); $i++) {
     for ($j=0; $j < count($phpArray[$i]); $j++) {
         echo "javaArray[$i][$j] = " . $javaArray[$i][$j] . ";";
     }
  }
?>
0
дададзена

Як было адзначана ў каментарах, гэта будзе працаваць толькі калі Javascript генеруецца з .php старонкі. Калі гэта .js сцэнар, ён не будзе працаваць.

Самы просты спосаб

var javaArray = <?php echo json_encode($phpArray) ?>;

як гэта было прапанавана іншымі.

Прычына, чаму вы код не працуе ў тым, што ў вас ёсць яваскрипт цыкл, а не PHP цыклу. У PHP, вы можаце зрабіць гэта:

var javaArray = [];
<?php
  for ($i=0; $i < count($phpArray); $i++) {
     for ($j=0; $j < count($phpArray[$i]); $j++) {
         echo "javaArray[$i][$j] = " . $javaArray[$i][$j] . ";";
     }
  }
?>
0
дададзена

Я не раблю шмат PHP, але я падазраю, што большасць народа будзе выкарыстоўваць функцыю JSON ці бібліятэку, каб стварыць тэкст, які прысвойвае зменнай Javascript - вы павінны глядзець на гэта.

У вашым выпадку, я магу бачыць тое, што вы спрабуеце зрабіць, але калі вы выкарыстоўваеце вы абсалютна павінны думаць пра баку PHP/сервер, як напісанне сцэнарыя для яваскрипта боку. Вы не можаце змешваць дзве мовы, таму што няма ніякага спосабу трымаць ПГПС $ я і $ J ў беспарадку з JavaScripts я і у.

Каб удакладніць, я ў JavaScript і J патрапіць у вобласць на кліенцкай машыне доўга пасля $ phpArray і $ я і $ J выйшлі з сферы на сэрвэры - «ніколі не сысціся» і г.д.

Падобна на тое, што вы спрабуеце пісаць, з'яўляецца вылучэнне масіва і ініцыялізацыі логіка. Там няма ніякай рэальнай праблемы з рабіць гэта такім чынам для кароткіх цыклаў. Вы закадаваць цыкл у PHP, і напісаць код у JavaScript. Там не будзе завесы на яваскрипте боку - проста «раскаталі» набор значэнняў.

напрыклад калі я і J перайсці ад 0 да 2, з лічбамі ад 0 да 8, вы б напісаць PHP код для вываду наступнае:

javaArray = new Array(2);
javaArray[0] = new Array(2);
javaArray[0][0] = 0;
javaArray[0][1] = 1;
javaArray[0][2] = 2;
javaArray[1] = new Array(2);
javaArray[1][0] = 3;
javaArray[1][1] = 4;
javaArray[1][2] = 5;
javaArray[2] = new Array(2);
javaArray[2][0] = 6;
javaArray[2][1] = 7;
javaArray[2][2] = 8;

Адзначым яшчэ раз, што падчас ініцыялізацыі, JavaScript не мае завесы - тыя, на баку PHP. Калі ў вас ёсць дадзеныя ўніз, хоць, вы можаце цыкл над ім ці індэкс ў яго з дапамогай JavaScript у браўзэры (але не PHP).

Спадзяюся, што гэта дапамагае.

знак ia.uk.com

0
дададзена
@Johanovski - гл sroes адказу, гэта, верагодна, як вы робіце JSON рэч у PHP тады :), што, безумоўна, будзе самым лепшым і самым эфектыўным спосабам перадачы масіва ў JavaScript.
дададзена аўтар Mark Rabjohn, крыніца

Я не раблю шмат PHP, але я падазраю, што большасць народа будзе выкарыстоўваць функцыю JSON ці бібліятэку, каб стварыць тэкст, які прысвойвае зменнай Javascript - вы павінны глядзець на гэта.

У вашым выпадку, я магу бачыць тое, што вы спрабуеце зрабіць, але калі вы выкарыстоўваеце вы абсалютна павінны думаць пра баку PHP/сервер, як напісанне сцэнарыя для яваскрипта боку. Вы не можаце змешваць дзве мовы, таму што няма ніякага спосабу трымаць ПГПС $ я і $ J ў беспарадку з JavaScripts я і у.

Каб удакладніць, я ў JavaScript і J патрапіць у вобласць на кліенцкай машыне доўга пасля $ phpArray і $ я і $ J выйшлі з сферы на сэрвэры - «ніколі не сысціся» і г.д.

Падобна на тое, што вы спрабуеце пісаць, з'яўляецца вылучэнне масіва і ініцыялізацыі логіка. Там няма ніякай рэальнай праблемы з рабіць гэта такім чынам для кароткіх цыклаў. Вы закадаваць цыкл у PHP, і напісаць код у JavaScript. Там не будзе завесы на яваскрипте боку - проста «раскаталі» набор значэнняў.

напрыклад калі я і J перайсці ад 0 да 2, з лічбамі ад 0 да 8, вы б напісаць PHP код для вываду наступнае:

javaArray = new Array(2);
javaArray[0] = new Array(2);
javaArray[0][0] = 0;
javaArray[0][1] = 1;
javaArray[0][2] = 2;
javaArray[1] = new Array(2);
javaArray[1][0] = 3;
javaArray[1][1] = 4;
javaArray[1][2] = 5;
javaArray[2] = new Array(2);
javaArray[2][0] = 6;
javaArray[2][1] = 7;
javaArray[2][2] = 8;

Адзначым яшчэ раз, што падчас ініцыялізацыі, JavaScript не мае завесы - тыя, на баку PHP. Калі ў вас ёсць дадзеныя ўніз, хоць, вы можаце цыкл над ім ці індэкс ў яго з дапамогай JavaScript у браўзэры (але не PHP).

Спадзяюся, што гэта дапамагае.

знак ia.uk.com

0
дададзена
@Johanovski - гл sroes адказу, гэта, верагодна, як вы робіце JSON рэч у PHP тады :), што, безумоўна, будзе самым лепшым і самым эфектыўным спосабам перадачы масіва ў JavaScript.
дададзена аўтар Mark Rabjohn, крыніца