각 루프별로 mysql 결과 집합 데이터에 액세스하는 방법
데이터베이스 클래스를 이용하여 MySQL을 조회하는 php 앱을 개발하고 있습니다.
수업은 여기 있습니다: http://net.tutsplus.com/tutorials/php/real-world-oop-with-php-and-mysql/
*자습서에는 여러 가지 나쁜 관행이 설명되어 있습니다. 현대적인 지침으로 사용해서는 안 됩니다.
저는 제 요구에 맞추기 위해 수업에 약간의 수정을 가했지만, 문제가 하나 있습니다(어쩌면 바보 같은 문제일 수도 있습니다).
사용시select()3개의 연관 열(id, first name, last name)이 있는 행이 있는 다차원 배열을 반환합니다.
배열([0] => 배열([id] => 1[이름] => 이름 1[성] => 성 1) [1] => 배열([id] => 2[이름] => 이름2[성] => 성2) [2] => 배열([id] => 3[이름] => 이름 3[성] => 성3))
이제 이 배열을 mysql 결과로 사용하기를 원합니다 (mysql_fetch_assoc()).
함께 사용할 수 있다는 것을 알고 있습니다.foreach(), 하지만 이는 단순/평탄한 배열의 경우입니다.나는 새로운 것을 다시 선언해야 한다고 생각합니다.foreach()각각의 안에서foreach(), 속도가 느려지거나 서버 부하가 더 높아질 수도 있다고 생각합니다.
그래서 적용하는 방법foreach()가장 간단한 방법은?
여기서 각각 사용하시면 됩니다.
foreach ($rows as $row) {
echo $row['id'];
echo $row['firstname'];
echo $row['lastname'];
}
제 생각에 당신은 수치 지수로 데이터에 접근하는 것에 익숙하다고 생각합니다(예:$row[0]), 그러나 이것은 필요하지 않습니다.우리는 연관 배열을 이용해 우리가 추구하는 데이터를 얻을 수 있습니다.
사용가능array_walk_recursive:
array_walk_recursive($array, function ($item, $key) {
echo "$key holds $item\n";
});
php로 배열된 경우, 각 루프는 항상 좋은 해결책입니다.
이 경우 다음과 같은 경우가 있습니다.
foreach($my_array as $number => $number_array)
{
foreach($number_array as $data = > $user_data)
{
print "Array number: $number, contains $data with $user_data. <br>";
}
}
브래드의 대답에 따라 한 말이겠지만, 제가 평판이 좋은 편은 아닙니다.
최근에 저는 다차원 배열의 키가 필요하다는 것을 알게 되었습니다. 즉, 그것은 단지 배열을 위한 인덱스가 아니라, 각 루프에 대한 것이었습니다.
그것을 달성하기 위해, 당신은 수용된 답변과 매우 유사한 것을 사용할 수 있지만, 대신 다음과 같이 키와 가치를 나눌 수 있습니다.
foreach ($mda as $mdaKey => $mdaData) {
echo $mdaKey . ": " . $mdaData["value"];
}
누군가에게 도움이 되길 바랍니다.
Holla/Hello, 알겠어요!파일명, tmp_name, file_size 등을 쉽게 구할 수 있습니다.그래서 줄 코드로 파일 이름을 얻는 방법을 알려드리겠습니다.
for ($i = 0 ; $i < count($files['name']); $i++) {
echo $files['name'][$i].'<br/>';
}
제 PC에서 테스트가 됩니다.
다차원 배열의 각 값에서 세부 정보를 가져오는 것은 배열을 배치한 후에 매우 간단합니다.이것이 배열입니다.
$example_array = array(
array('1','John','Smith'),
array('2','Dave','Jones'),
array('3','Bob','Williams')
);
그런 다음 각 루프에 대해 다음과 같이 배열을 실행합니다.
foreach ($example_array as $value) {
echo $value[0]; //this will echo 1 on first cycle, 2 on second etc....
echo $value[1]; //this will echo John on first cycle, Dave on second etc....
echo $value[2]; //this will echo Smith on first cycle, Jones on second etc....
}
원하는 대로 테이블에 메아리칠 수 있습니다.
echo "<table>"
foreach ($example_array as $value) {
echo "<tr><td>" . $value[0] . "</td>";
echo "<td>" . $value[1] . "</td>";
echo "<td>" . $value[2] . "</td></tr>";
}
echo "</table>";
다음과 같은 테이블을 제공해야 합니다.
|1|John|Smith |
|2|Dave|Jones |
|3|Bob |Williams|
의 예:mysql_fetch_assoc():
while ($row = mysql_fetch_assoc($result))
{
/* ... your stuff ...*/
}
당신의 경우는foreach, 을$result배열을 사용하여 얻을 수 있습니다.select():
foreach ($result as $row)
{
/* ... your stuff ...*/
}
그것은 적절한 반복과 거의 같습니다.
이상적으로 다차원 배열은 일반적으로 배열의 배열이므로 빈 배열을 선언한 다음 별도의 배열로 db 결과에서 키 및 값 쌍을 생성하고, 마지막으로 반복 시 생성된 각 배열을 외부 배열로 푸시합니다.이것이 별도의 함수 호출일 경우 외부 배열을 반환할 수 있습니다.도움이 되기를 바랍니다.
$response = array();
foreach ($res as $result) {
$elements = array("firstname" => $result[0], "subject_name" => $result[1]);
array_push($response, $elements);
}
이것이 꽤 오래된 대답이라는 것을 압니다.사용하지 않고 보다 빠른 솔루션을 제공합니다.foreach:
사용하다array_column
print_r(array_column($array, 'firstname')); #returns the value associated with that key 'firstname'
또한 위 작업을 실행하기 전에 확인할 수 있습니다.
if(array_key_exists('firstname', $array)){
print_r(array_column($array, 'firstname'));
}
기본적으로 각각의 표준은 당신의 경우에 mysql_fetch_associate와 같은 결과를 산출하지 않을까요?
해당 배열에서 foreach를 사용하면 'id', 'first name' 및 'last name'의 세 가지 키가 포함된 배열을 얻을 수 있습니다.
이는 각 행에 대해 mysql_fetch_associate가 (루프에서) 제공하는 것과 같아야 합니다.
foreach ($parsed as $key=> $poke)
{
$insert = mysql_query("insert into soal
(pertanyaan, a, b, c, d, e, jawaban)
values
('$poke[question]',
'$poke[options][A]',
'$poke[options][B]',
'$poke[options][C]',
'$poke[options][D]',
'$poke[options][E]',
'$poke[answer]')");
}
배열 요소에 대해 문자열을 조작해야 하는 경우(예: callback 함수 array_walk_recursive(또는 array_walk))를 사용하는 것이 좋습니다.둘 다 SQL 문을 동적으로 작성할 때 유용합니다.
이 사용법에서는 각 요소에 쉼표와 줄을 추가해야 하는 배열을 사용합니다.
$some_array = [];
$some_array의
0: "배열의 일부 문자열"
1: "어레이의 또 다른 문자열"
php.net 기준
콜백이 배열의 실제 값과 함께 작동해야 하는 경우 콜백의 첫 번째 매개 변수를 참조로 지정합니다.그러면 해당 요소에 대한 변경 사항이 원래 배열 자체에서 수행됩니다.
array_walk_recursive($some_array, function (&$value, $key) {
$value .= ",\n";
});
:
의 일부 부,\n"
열,\n"
array_walk를 사용하여 필드에 데이터베이스 테이블 이름을 추가하는 동일한 개념이 있습니다.
$fields = [];
$ 필드의 데이터:
0: "이름"
Name" 1: 성"
$tbl = "Employees"
array_walk($fields, 'prefixOnArray', $tbl.".");
function prefixOnArray(&$value, $key, $prefix) {
$value = $prefix.$value;
}
:
"직원들.이름"
"직원들.성"
성능이 각 항목에 걸쳐 문제가 되는지 알고 싶지만, 소수의 요소가 포함된 어레이인 IMHO의 경우 고려할 가치가 거의 없습니다.
mysql 결과 집합 개체는 즉시 a 내에서 반복할 수 있습니다.이것은 어떤 종류의 전화를 할 필요가 없다는 것을 의미합니다.fetch*()php의 행 데이터에 액세스하기 위한 function/ method.단순히 결과 집합 객체를 입력 값으로 전달할 수 있습니다.foreach().
또한, PHP 7.1로부터, "어레이 파괴"는 당신이 (바람직하다면) 그 안에서 개별적인 값들을 만들 수 있게 해줍니다.foreach()선언.
모두 동일한 출력을 생성하는 예제를 모두 포함하지 않는 목록: (PHPize Sandbox)
foreach ($mysqli->query("SELECT id, firstname, lastname FROM your_table") as $row) {
vprintf('%d: %s %s', $row);
}
foreach ($mysqli->query("SELECT * FROM your_table") as ['id' => $id, 'firstname' => $firstName, 'lastname' => $lastName]) {
printf('%d: %s %s', $id, $firstName, $lastName);
}
*파괴하는 동안 모든 열을 나열할 필요는 없으며 액세스하려는 항목만 나열할 필요가 없습니다.
$result = $mysqli->query("SELECT * FROM your_table");
foreach ($result as $row) {
echo "$row['id']: $row['firstname'] $row['lastname']";
}
언급URL : https://stackoverflow.com/questions/6413589/how-to-access-mysql-result-set-data-with-a-foreach-loop
'programing' 카테고리의 다른 글
| Git가 파일을 이진 파일로 취급하도록 하려면 어떻게 해야 합니까? (0) | 2023.10.22 |
|---|---|
| 판다 그룹:줄 조합을 얻는 방법 (0) | 2023.10.22 |
| 문자열은 VBA에서 반복할 수 있는 배열입니까? (0) | 2023.10.17 |
| 중첩된 키가 딕트에 존재하는지 확인하는 우아한 방법? (0) | 2023.10.17 |
| php로 ISO8601을 날짜 형식으로 변환하는 방법 (0) | 2023.10.17 |