私は以下のコードを持っています。文字列の最初のcharaterを返すだけです。私は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の配列の3番目のインデックスとして表示します。 – RobertPitt
@RobertPitt:私は、アナログの "string == array"が要素にアクセスするためにのみ真であることに気づくでしょう。他のケースでは、文字列と配列の動作が異なります。 – zerkms
はい、彼らは違った振る舞いをします。私が考えているのは、ArrayAccessがStrings haeに実装したことです。 – RobertPitt