Далучайцеся радок і зменную, каб атрымаць іншую зменную ў PHP

Выбачайце, калі гэта ўжо было прапанавана, але гэта цяжка, каб знайсці яго ... Я спрабаваў googlin гэтай тэмы без поспеху.

Тое, што я хачу зрабіць гэта:

$layoutColor = 2;
$colors1 = array ("F57171", "FACCCC");
$colors2 = array ("FF9900", "FFC66F");

$chosenTheme = "colors".$layoutColor;
echo $chosenTheme [0];

Я хачу далучыцца да зменнай $ layoutColor са словам «кветак», каб атрымаць зменную $ colors2.

Як я магу гэта зрабіць?

Дзякуючы.

0
Вы хочаце, каб апрацаваць радок як імя іншай зменнай?
дададзена аўтар user4035, крыніца
Гэта называецца зменныя зменныя, і вы <�б> НЕ Хачу туды. Яны прыводзяць да зусім марны код. Выкарыстоўвайце мнагамерны масіў замест: $ колеру [1] [1] -> FACCCC
дададзена аўтар Marc B, крыніца
Я хачу далучыцца да іх, і, каб атрымаць іншую зменную ... Я меў звычай рабіць гэта ўвесь час у ActionScript, але я не ведаю, як пісаць яго ў PHP. У мяне будзе шмат $ кветак масіваў, як $ color35, $ ​​color36 ... Я wan't, каб мець магчымасць проста змяніць лік у пераменным $ layoutColor, і з гэтым, пераменным $ chosenTheme аўтаматычна будзе роўны колеру, якія я хачу.
дададзена аўтар DanielFox, крыніца

7 адказы

Вы лепш ад набліжэння да гэтага, толькі аб'яднаўшы ўсе вашы варыянты ў адзіны мнагамерны масіў:

$layoutColor = 2;
$colors = array();
$colors[1] = array ("F57171", "FACCCC");
$colors[2] = array ("FF9900", "FFC66F");

$chosenTheme = $colors[$layoutColor];
echo $chosenTheme [0];
4
дададзена
Я не думаў пра гэта, гэта, здаецца, лепшы спосаб зрабіць гэта на самай справе. Значна лепш. Дзякуючы.
дададзена аўтар DanielFox, крыніца

Паспрабуйце гэта:

<?php
$layoutColor = 2;
$colors1 = array ("F57171", "FACCCC");
$colors2 = array ("FF9900", "FFC66F");

$chosenTheme = "colors".$layoutColor;
echo ${$chosenTheme}[0];

друк:

<�Р> FF9900 </р>
2
дададзена
У той час як я сцвярджаю, што мнагамерны масіў з'яўляецца лепшым падыходам тут, гэты адказ больш прамы адказ на гэтае пытанне. +1
дададзена аўтар Ben D, крыніца
Ўзгоднена. Гэта выдатна працуе, але мнагамерны масіў, здаецца, лепшы выбар для мяне. Я проста не думаў пра гэта ... Дзякуй ў любым выпадку!
дададзена аўтар DanielFox, крыніца

Я думаю, вы можаце спрасціць гэта, выкарыстоўваючы шматмерныя масівы:

$colors = array(
    array ("F57171", "FACCCC"),
    array ("FF9900", "FFC66F")
);

Так што ...

echo $colors[0];

Ці вы можаце зменныя зменныя карыстальніка:

$chosenTheme = ${"colors".$layoutColor};
1
дададзена

Вы можаце паспрабаваць гэта

$layoutColor = 2;
$$colors2 = "colors".$layoutColor;

Такім чынам, вы атрымаеце $ colors2 зменную

print_r($colors2);//Array ( [0] => FF9900 [1] => FFC66F )

Звярніце ўвагу на двайны $ , які будзе трымаць імя зменнай у зменнай.

1
дададзена

Паспрабуйце з:

$layoutColor = 2;

$string = "color";

echo $$string.$layoutColor;
1
дададзена

You need to use dynamic variables $$chosenTheme = "colors".$layoutColor;

then access the array by using this variable $chosenTheme

0
дададзена

Гэта не можа быць адказам на ваша пытанне, але, у залежнасці ад канкрэтнага кантэксту, паспрабаваць нешта накшталт гэтага:

$layoutColor = 2;
$colors = array (
               Array("F57171", "FACCCC"),
               Array ("FF9900", "FFC66F")
           );

echo $colors[$layoutColor][0];

Шматмерных масіў нашмат лягчэй чытаць

0
дададзена