Массив условия выбора в переполнении стека

У меня есть код PHP с циклом:

$explodeResult=explode(", ",$serviceName);
foreach($explodeResult as $value)
{
$sql = "SELECT id,parent,code,name,xs1 as DOWNLOAD, xs2 as UPLOAD
FROM sc_params
WHERE rfen = 'SERVICE_REQUESTED'
AND code = :param1
OR code IN
(
SELECT code
FROM sc_params
WHERE rfen = 'SERVICE_REQUESTED'
AND id = (
SELECT parent
FROM sc_params
WHERE rfen = 'SERVICE_REQUESTED'
AND code = :param1 )
)
";
$stmt = oci_parse($this->_conn,$sql);
oci_bind_by_name($stmt, ":param1", $value);
$rs = oci_execute($stmt);
if (!$rs) {
$error = oci_error();
$this->_err = $error;
return false;
}

$product    = Array();
$idx        = $idx2 = 0;
while ($data = oci_fetch_array($stmt, OCI_BOTH)) {
if($data['PARENT'] == 0) {
$idx++;
$product[$idx]['id']        = $data['ID'];
$product[$idx]['name']      = $data['NAME'];
}
else {
$product[$idx][0]['attributeName']   = 'DOWNLOAD';
$product[$idx][0]['attributeValue'] = $data['DOWNLOAD'];
$product[$idx][1]['attributeName']   = 'UPLOAD';
$product[$idx][1]['attributeValue'] = $data['UPLOAD'];
}
}
print_r ($test_array);

Данные из запроса:

ID NAME      PARENT DOWNLOAD UPLOAD
1  INTERNET   0      null     null
10 SPEED      1      2048     512
2  VOICE      0      null     null
12 PSTN       2      null     null

результат массива:

массив
(
[1] => Массив
(
[id] => 1
[name] => ИНТЕРНЕТ
[0] => Массив
(
[attributeName] => СКАЧАТЬ
[attributeValue] => 2048
)

            [1] => Array
(
[attributeName] => UPLOAD
[attributeValue] => 512
)

)

[2] => Array
(
[id] => 2
[name] => VOICE
[0] => Array
(
[attributeName] => DOWNLOAD
[attributeValue] =>
)

[1] => Array
(
[attributeName] => UPLOAD
[attributeValue] =>
)
)
)

Но я просто хочу показать attributeName а также attributeValue за internet только .. я пытался добавить if($data['NAME'][0]='INTERNET') ниже while, но это не работает, VOICE все еще имеет attributeName а также attributeValue, Пожалуйста помоги. Спасибо

1

Решение

Итак, с вашими данными у вас есть много возможностей, как организовать это:

1-й просто проверьте null:

elseif (!($data['DOWNLOAD']==null && $data['UPLOAD']==null)) {
$product[$idx][0]['attributeName']   = 'DOWNLOAD';
$product[$idx][0]['attributeValue'] = $data['DOWNLOAD'];
$product[$idx][1]['attributeName']   = 'UPLOAD';
$product[$idx][1]['attributeValue'] = $data['UPLOAD'];
}

2-й Проверьте текущее родительское имя так:

if($data['PARENT'] == 0) {

$idx++;
$product[$idx]['id']        = $data['ID'];
$product[$idx]['name']      = $data['NAME'];
$curParent = $data['NAME'];
} elseif ($curParent == 'INTERNET') {

$product[$idx][0]['attributeName']   = 'DOWNLOAD';
$product[$idx][0]['attributeValue'] = $data['DOWNLOAD'];
$product[$idx][1]['attributeName']   = 'UPLOAD';
$product[$idx][1]['attributeValue'] = $data['UPLOAD'];
}

и 3-й — вы можете исправить свой запрос, чтобы получить ЗАГРУЗИТЬ и ЗАГРУЗИТЬ прямо в строку ИНТЕРНЕТ. Если тебе это действительно нужно, я могу тебе помочь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector