2010-11-19 5 views
1

에 대한 변수 내부에 배열 내가 PHP와 HTML 테이블을 생성하고이 코드가있다 :PHP - 가변 변수 나()

<?php 
include("numbers2.php"); 

echo '<table border="1">'; 
echo '<tr>'; 

for ($i = 1; $i <= 9; $i++) { 
if($a1_pos_txt !== TRUE) { 

echo "<td>" . $numbers["a" . $i . "_pos"] . "</td>"; 

} else {?> 
<?php 
echo '<td><input type="text" name="a' . $i . '_post" size="1" maxlength="1" /></td>'; 
?> 
<?php } }?> 

내가해야 할 $a1_post_txt 변수를 수정되는 그래서 때 FOOR 내가 $a1_pos_txt 대신 할 때마다 얻을 것이다 루프 :

$a1_pos_txt 
. 
. 
$a9_pos_txt 

을 나는 그것이 내가 $numbers["a" . $i . "_pos"]name="a' . $i . '_post"로하지만 지금은 변수가 나는이 작업을 수행하는 방법을 알고하지는 다른 변수의 내부입니다했다 기본적으로 무엇을.

충분히 명확하면 좋겠다. 필요한 경우 설명을 요청하십시오.

미리 감사드립니다.

+4

대신 배열을 사용해야합니다 – KingCrunch

답변

2

대신 변수를 사용하여 배열을 할 것입니다. $의 a1_pos_txt에 이전했다 true 또는 flase 같은 값을 ... 포함 배열에서 $ a9_pos_txt

$arrOfValues[1] = TRUE; 
$arrOfValues[2] = FALSE; 
...... 
..... 
... 
$arrOfValues[9] = TRUE; 

그래서 코드는이

<?php 
include("numbers2.php"); 

echo '<table border="1">'; 
    echo '<tr>'; 

for ($i = 1; $i <= 9; $i++) { 
if($arrOfValues[$i] !== TRUE) { 

echo "<td>" . $numbers["a" . $i . "_pos"] . "</td>"; 

} else {?> 
<?php 
echo '<td><input type="text" name="a' . $i . '_post" size="1" maxlength="1" /></td>'; 
?> 

+0

비록 내가 이것을 적용 할 수는 없지만 (이전의 코드 때문에) 이것은 나에게 좋은 생각을 주었다. (약간의 수정 덕분에) – Trufa

+0

고마워! 나는 아주 비슷한 것을했지만 conept에서 이것은 정확히 내가 한 일이다! – Trufa

+0

내 대답이 문제 해결에 도움이되기를 바랍니다. –

0

http://php.net/manual/en/function.eval.php

평가 후면 기능은 당신이 원하는 것을 할 것입니다.

+0

젠장, PHP는 내려갔습니다 (적어도 나를 위해) 나는 그것의 업적만큼 빨리 보여줍니다! 감사!! – Trufa

+0

@Trufa - 확인 된 php.net이 다운되었습니다. 그러나 uk.php.net과 같은 미러가 작동하므로 대신 그 중 하나를 사용하십시오. – Spudley

+0

사이트가 멋지다! 덕분에 그것을 시도해 보겠습니다. – Trufa

0

나는 하나의 변수를 배열로 대체해야한다고 생각한다. 내가 대신 당신이 뭔가를 사용할 수있는 배열을해야

$ $

a9_pos_txt ... a1_pos_txt 만드는 의미!

경우 ($ myVar에 [$ i]를 = = true) {...}

어디에서 어떻게 플래그 변수를 초기화합니까?

찰리

+0

또는 Lan이 eval 함수를 사용하고있다 : – Chemed

1

당신은 동적 변수를 사용할 수 있습니다

<?php 
    $test = 'a'; 
    echo ${'test'}; 
?> 

이 "A"를 표시합니다.

그래서 변수 이름을 문자열로 만들고 그 값을 얻을 수 있습니다!

+0

네, 할 수 있다고 생각하지만 "변수의 일부"$ a1_post_txt ("1"만 변경)에 대해이 작업을 수행하는 방법을 파악할 수 없습니다 – Trufa

+0

나는 업데이트했습니다. 나는 당신이 더 잘 이해할 것이라고 생각합니다. – MatTheCat

1

사람처럼 보일 것입니다 제안 된 가변 변수 - 그들은 끔찍합니다! 그들을 사용하지 마십시오! (코드를 읽고 유지 관리하기가 어려우며 보안 문제가 발생할 가능성이 있음).

다른 사람이 사용하는 것이 좋습니다 eval() - 확실히 사용하지 마십시오!(eval를 사용하여 거의 모든 가능한 상황에서 매우 가난한 연습으로 간주됩니다, 그것은 보안 문제를 소개 가능성이 높다 입니다)라는 이름의 변수를 대신 배열을 사용하여

몇몇 사람들은 제안 -이 올바른 솔루션입니다.

이미 $numbers으로 작성 했으므로 이후 변수와 비슷한 것을 할 수 있습니까?

그들이 HTML의 당신이 당신 대신 변수를 게시하려면이 코드를 변경할 수 name="a' . $i . '_post"있어 코드와 관련된 경우 -이 같은 : 대신 a1_post라는 이름의 포스트 변수를 필요없이 다음

name="a_post['.$i.']" 

a2_post 등을 사용하면 a_post[1]a_post[2] 등의 이름을 갖게됩니다. 배열이기 때문에 매우 쉽게 반복 할 수 있습니다.