Результаты обрезки строк в PHP? - PullRequest
1 голос
/ 22 сентября 2009

Здравствуйте, я получаю результаты в формате

location1 2 4
location2 3 2
location3 0 0
location1 1 0

Как обрезать результаты, чтобы строка, возвращающая 0 и 0, не отображалась? спасибо

.................

Вот запрос Mysql, я не знаю, как урезать его из MySQL, поэтому я подумал, используя PHP ..

    SELECT hotelas.name, hotelas.address, hotelas.city, hotelas.country, hotelas.hotel_id 
AS hotelid, 
COUNT( DISTINCT apart.apartman_id ) AS number_of_free_ap, 
COUNT( DISTINCT room.apartman_id ) AS num_of_free_rooms
    FROM hotel AS hotelas
    LEFT JOIN apartman AS apart ON ( apart.apartman_hotel = hotelas.hotel_id
    AND apart.occupied =0
    AND apart.what =1 )
    LEFT JOIN apartman AS room ON ( room.apartman_hotel = hotelas.hotel_id
    AND room.occupied =0
    AND room.what =0 )
    GROUP BY hotelas.hotel_id

СТОЛ поле какое, 0 - для комнаты, 1 - квартира

Итак, я получил несколько столбцов, среди которых наиболее важными являются столбцы подсчета, свободные комнаты и бесплатные квартиры. Итак, у меня есть тестовый отель, в котором полно 0 номеров и 0 апартаментов, и я хочу удалить его из этого списка, где во всех других отелях есть хотя бы одна комната или одна квартира.

Ответы [ 3 ]

6 голосов
/ 22 сентября 2009

, если вы запрашиваете у своей базы данных эту информацию, и вы можете изменить запрос, это было бы лучшим местом для него.

SELECT *
FROM myTable
WHERE
    firstColumn != 0
OR
    secondColumn != 0

Если вы получаете это в PHP из какого-либо другого источника (CSV или чего-то еще), или у вас нет контроля над запросом, используйте array_filter():

// i'm assuming each line in your example is an array of values
$myArray = array_filter($myArray, 'noDoubleZeroes');

function noDoubleZeroes($line) {
    return $line[1] != 0 || $line[2] != 0;
}
1 голос
/ 22 сентября 2009
select * from table
where column1 !=0
or column2 !=0

Вот как вы можете обрезать его в MySQL.

OTOH, если у вас есть такой массив (обычно вы получите его после запроса от базы данных)

array(array('location1', 2, 4), array('location2', 3, 2))

Затем вам нужно перебрать массив и выполнить ручную фильтрацию:

$newarrs=array();
foreach($arrs as $values)
{
  if($values[1]!=0 || $values[2]!=0)
    $newarrs[]=$values;
}
return $newarrs;
0 голосов
/ 22 сентября 2009

Если я правильно вас понял, это должно помочь

$columns = explode($resultLine, " ");
$whatYouWant =  $columns[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...