Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: пересечение массивов
 
 автор: stigler   (03.06.2010 в 20:34)   письмо автору
 
 

<? 
$hostname 
"localhost"
$username "h8823_2"
$password "2"
$dbName "h8823_2"

/* Таблица MySQL, в которой хранятся данные */ 
$userstable "a1a_script_step_pass_param"

/* создать соединение */ 
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение "); 

@
mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");  

$query ="SELECT SUBSTRING(param FROM 6)  
FROM `a1a_script_step_pass_param`  
WHERE param  LIKE 'pass_%' 
AND `value` != '' 
LIMIT 0 , 30"
;  

  
$result MYSQL_QUERY($query);  
  if(!
$result) exit("Ошибка выполнения запроса - ".mysql_error()); 




    
/* Печать результатов в HTML */ 
    
print "<table>\n"
    while (
$line mysql_fetch_array($resultMYSQL_ASSOC)) { 
        print 
"\t<tr>\n"
        foreach (
$line as $col_value)  


  print 
"\t\t<td>$col_value</td>\n"
        } 
        print 
"\t</tr>\n"
    } 
    print 
"</table>\n"


    
/* Освобождение resultset */ 
    
mysql_free_result($result); 

    
/* Закрытие соединения */ 
    
mysql_close($link); 



$xml=
<digiseller.request> 
<id_group>75096</id_group> 
<page>1</page> 
<rows>200</rows> 
<order>price</order> 
</digiseller.request> 
"

function 
_GetAnswer($address$xml){ 
  
$ch curl_init($address); 
  
curl_setopt($chCURLOPT_HEADER0); 
  
curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
  
curl_setopt($chCURLOPT_POST,1); 
  
curl_setopt($chCURLOPT_POSTFIELDS$xml); 
  
$result=curl_exec($ch); 
  return 
$result

$answer=_GetAnswer("http://shop.digiseller.ru/xml/personal_goods.asp"$xml); 
$xmlres simplexml_load_string($answer); 
echo 
"<TABLE>"
foreach (
$xmlres->rows->row as $row) { 
  echo 
"<TR>"
  echo 
"<TD>"

  echo 
iconv("UTF-8""CP1251"$row->name_goods); 

  echo 
"<TD>"
  echo 
"блаблабла "

  echo 
iconv("UTF-8""CP1251"$row->name_goods); 
  echo 
" "
  echo 
"<A href=/2/goods.php?idd=".$row->id_goods.">"
  echo 
"купить"
  echo 
"</A>"


echo 
"</TABLE>"
$icq array_intersect ($col_value$row->name_goods); 
print
"<br>"
print 
"$icq"
?>

хэлп, не работает как не пытался
$icq = array_intersect ($col_value, $row->name_goods); 
print"<br>"; 
print "$icq"; 
где подводный камень?=)

  Ответить  
 
 автор: Tonik992   (03.06.2010 в 21:29)   письмо автору
 
   для: stigler   (03.06.2010 в 20:34)
 

Проверь, является ли $row->name_goods массивом.. А также $col_value.

  Ответить  
 
 автор: stigler   (03.06.2010 в 21:34)   письмо автору
 
   для: Tonik992   (03.06.2010 в 21:29)
 

ммм как?
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value)
{
print "$col_value";
}}
и

foreach ($xmlres->rows->row as $row) {
print"<br>";
print"$row->name_goods";

вот так написал выдаёт просто значения в строчку

  Ответить  
 
 автор: ........   (03.06.2010 в 21:50)
 
   для: stigler   (03.06.2010 в 21:34)
 

var_dump() — Dumps information about a variable

while ($line = mysql_fetch_row($result)) {
foreach ($line as $col_value)
$array[] = $line[0];
}

var_dump($array)

  Ответить  
 
 автор: ....   (03.06.2010 в 21:53)
 
   для: ........   (03.06.2010 в 21:50)
 

забыл удалитьть строчку
foreach ($line as $col_value)

  Ответить  
 
 автор: stigler   (03.06.2010 в 22:10)   письмо автору
 
   для: ....   (03.06.2010 в 21:53)
 

заминил кусок кода на это
/* Печать результатов в HTML */

while ($line = mysql_fetch_row($result)) { 
$array[] = $line[0];

}

var_dump($array);

  print "$array";

выводит это array(3) { [0]=> string(7) "4362363" [1]=> string(1) "6" [2]=> string(3) "666" } Array
пересечение попрежнему не работает

  Ответить  
 
 автор: .....   (03.06.2010 в 22:31)
 
   для: stigler   (03.06.2010 в 22:10)
 

$row->name_goods тоже не массив

print '<pre>';
var_dump($row->name_goods);

  Ответить  
 
 автор: stigler   (03.06.2010 в 23:09)   письмо автору
 
   для: .....   (03.06.2010 в 22:31)
 


foreach ($xmlres->rows->row as $row) {
print"<br>";
print"$row->name_goods";
print"<br>";
}
$array2[] = $xmlres[0];

var_dump($array2);

    $icq = array_intersect ($arrey, $arrey2);
print "$icq";
?>

воттак???
в случае с var_dump($array2); получается это
array(1) { [0]=> object(SimpleXMLElement)#2 (8) { ["retval"]=> string(1) "0" ["retdesc"]=> object(SimpleXMLElement)#4 (0) { } ["id_group"]=> string(5) "75096" ["cnt_goods"]=> string(1) "2" ["pages"]=> string(1) "1" ["page"]=> string(1) "1" ["order"]=> string(5) "price" ["rows"]=> object(SimpleXMLElement)#3 (2) { ["@attributes"]=> array(1) { ["cnt"]=> string(1) "2" } ["row"]=> array(2) { [0]=> object(SimpleXMLElement)#6 (6) { ["@attributes"]=> array(1) { ["id"]=> string(1) "1" } ["id_goods"]=> string(6) "963688" ["name_goods"]=> string(5) "35632" ["price"]=> string(4) "0,04" ["currency"]=> string(3) "USD" ["credit_price"]=> object(SimpleXMLElement)#8 (0) { } } [1]=> object(SimpleXMLElement)#7 (6) { ["@attributes"]=> array(1) { ["id"]=> string(1) "2" } ["id_goods"]=> string(6) "963686" ["name_goods"]=> string(7) "4362363" ["price"]=> string(7) "4362363" ["currency"]=> string(3) "USD" ["credit_price"]=> object(SimpleXMLElement)#9 (0) { } } } } } }

пересечение по преждену молчил =(

  Ответить  
 
 автор: stigler   (03.06.2010 в 23:11)   письмо автору
 
   для: stigler   (03.06.2010 в 23:09)
 

если

foreach ($xmlres->rows->row as $row) {
print"<br>";
print"$row->name_goods";
print"<br>";
}
print '<pre>';
var_dump($row->name_goods);

то
object(SimpleXMLElement)#2 (1) {
[0]=>
string(7) "4362363"
}

почему то одно значение из массива

  Ответить  
 
 автор: Tonik992   (03.06.2010 в 23:56)   письмо автору
 
   для: stigler   (03.06.2010 в 23:11)
 

А ты смотрел как работает пересечение? Одинаковые значения объединяются в одно (ключи сохраняются)... Ты проверял, есть ли одинаковое хоть что-нибудь в этих двух массивах??




array array_intersect ( array $array1, array $array2 [, array $ ...] )


Функция array_intersect() возвращает массив, содержащий значения массива array1, которые содержат все перечисленные в аргументах массивы. Обратите внимание, что ключи сохраняются.


Пример 216. Пример использования array_intersect()

<?php
$array1 
= array ("a" => "green""red""blue");
$array2 = array ("b" => "green""yellow""red");
$result array_intersect ($array1$array2); 
В результате выполнения переменная $result будет содержать Array
(
    [
a] => green
    
[0] => red

?>

  Ответить  
 
 автор: stigler   (04.06.2010 в 18:02)   письмо автору
 
   для: Tonik992   (03.06.2010 в 23:56)
 

хррррррррррр
ну чего тут ещё не хватает * бьюсь головой об стол *
<?
$hostname 
"localhost";
$username "h8823_2";
$password "2";
$dbName "h8823_2";

/* Таблица MySQL, в которой хранятся данные */
$userstable "a1a_script_step_pass_param";

/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");

@
mysql_select_db("$dbName") or die("Не могу выбрать базу данных "); 

$query ="SELECT SUBSTRING(param FROM 6) 
FROM `a1a_script_step_pass_param` 
WHERE param  LIKE 'pass_%'
AND `value` != ''
LIMIT 0 , 30"


  
$result MYSQL_QUERY($query); 
  if(!
$result) exit("Ошибка выполнения запроса - ".mysql_error());




    
/* Печать результатов в HTML */

while ($line mysql_fetch_row($result)) { 
$array[] = $line[0];

}
print 
'<pre>';
var_dump($array);


        


    
/* Освобождение resultset */
    
mysql_free_result($result);

    
/* Закрытие соединения */
    
mysql_close($link);


$xml="
<digiseller.request>
<id_group>75096</id_group>
<page>1</page>
<rows>200</rows>
<order>price</order>
</digiseller.request>
"
;
function 
_GetAnswer($address$xml){
  
$ch curl_init($address);
  
curl_setopt($chCURLOPT_HEADER0);
  
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
  
curl_setopt($chCURLOPT_POST,1);
  
curl_setopt($chCURLOPT_POSTFIELDS$xml);
  
$result=curl_exec($ch);
  return 
$result;
}
$answer=_GetAnswer("http://shop.digiseller.ru/xml/personal_goods.asp"$xml);
$xmlres simplexml_load_string($answer);


foreach (
$xmlres->rows->row as $row) {
$array2[] = $row->name_goods[0];
}

print 
'<pre>';
var_dump($array2);

    
$icq array_intersect ($arrey$array2);
$icq2[] = $icq[0];

print 
'<pre>';
var_dump($icq2);
?>


выводит это
array(3) {
[0]=>
string(7) "4362363"
[1]=>
string(1) "6"
[2]=>
string(3) "666"
}
array(2) {
[0]=>
object(SimpleXMLElement)#7 (1) {
[0]=>
string(5) "35632"
}
[1]=>
object(SimpleXMLElement)#8 (1) {
[0]=>
string(7) "4362363"
}
}
array(1) {
[0]=>
NULL
}

  Ответить  
 
 автор: .....   (04.06.2010 в 23:09)
 
   для: stigler   (04.06.2010 в 18:02)
 

Вроде по логике должно быть
$array2[] = $row->name_goods;

из simplexml-елемента(-строки) из-за причудливости вроде нельзя извлечь первый байт как просто из строки $string[0], если память не изменяет

интересно откуда взялось array(1) {[0]=>NULL}
, наверное из-за
>$icq = array_intersect ($arrey, $array2);
опечатки в имени переменной

  Ответить  
 
 автор: stigler   (05.06.2010 в 16:54)   письмо автору
 
   для: .....   (04.06.2010 в 23:09)
 

ААААААААААееееееееееееееееее!!!!! спасибо всем откликнувшимся! век не забуду =))))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования