это гораздо менее кратким, но она стремится работать независимо от названия поля:
<?php
$string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')";
$newString=trim(str_replace(')','',str_replace('(','',str_replace('OR','',str_replace('AND','',$string)))));
$tab=explode('pr.',$newString);
foreach($tab as $value) {
$value=trim(str_replace(' ','',str_replace('\'','',$value)));
$tab2[]=$value;
}
/*echo '<pre>';
var_dump($tab2);
echo '</pre>';*/
$operators=['!=','<>','<','>','='];
foreach ($tab2 as $index=>$value) {
foreach ($operators as $operator) {
$found=0;
$explode=explode($operator,$value);
if (count($explode)==1) {}//not the good one
else {
$found=1;
break;
}
}
if ($found==1) $newTab[$explode[0]][$index]=$explode[1];
}
echo '<pre>';
var_dump($newTab);
echo '</pre>';
?>
Даст вам:
array(3) {
["StatusCode"]=>
array(2) {
[1]=>
string(1) "U"
[6]=>
string(1) "D"
}
["pkBrand"]=>
array(2) {
[2]=>
string(1) "9"
[3]=>
string(2) "70"
}
["pkCategory"]=>
array(2) {
[4]=>
string(2) "55"
[5]=>
string(2) "56"
}
}
ваш код дает мне ошибку: Ошибка синтаксиса: неожиданный '[' in ... для этой строки $ operator = ['! =', '<>', '<','>', '=']; –
никаких ошибок для меня. Можете ли вы дать мне полное сообщение об ошибке? – butterFlyNick
Ошибка анализа: синтаксическая ошибка, неожиданная '[' в /Users/***/Sites/***/_plugins/site-pages/public/add-a-model-pages/manage-models.php в строке 547 строка 547 - это $ operator = ['! =', '<>', '<','>', '=']; –