아래 코드가 있습니다. 문자열의 첫 번째 문자 만 반환합니다. 내가 var_dump($row);
를 사용하는 경우PHP foreach 루프는 각 문자열의 첫 번째 문자 만 반환합니다.
$conn = Mage::getSingleton('core/resource')->getConnection('connection_write');
$str = 'something to search for';
$fields = 'content_field1, content_field2, content_field3, content_field4';
$idFields = 'id_field1, id_field2, id_field3, id_field4';
$tables = 'table1, table2, table3, table4';
$table = explode(', ', $tables);
$field = explode(', ', $fields);
$rowId = explode(', ', $idFields);
$i=1;
while ($i<4) {
$f = $field[$i];
$id = $rowId[$i];
$sql = $conn->select()->from($table[$i], array($f, $id))->where($f . " LIKE ?", '%' . $str . '%');
$result = $conn->fetchRow($sql);
foreach ($result as $row) {
var_dump($row[$id]);
}
$i++;
}
그러나, ID 필드와 콘텐츠 분야 모두에서 전체 문자열이 출력된다.
누구나 내가 잘못하고있는 것을 설명 할 수 있습니까?
미리 감사드립니다.
문자열은 문자 배열로 간주되므로'$ test = "abcs"'는'$ test = array ('a', ' $ test [2]'는'c'를 char의 배열에서 세 번째 인덱스로 표시합니다! – RobertPitt
@RobertPitt : 아날로그 "string == array"는 요소에 액세스하는 경우에만 true입니다. 다른 경우에는 문자열과 배열이 다르게 동작합니다. – zerkms
예 그들은 다르게 행동합니다. 내가 생각하는 방식은 Strings hae ArrayAccess가 구현 한 것입니다! – RobertPitt