PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (106): В начало « ... 44 45 46 47 [48] 49 50 51 52 ... » В конец
Найдено сообщений: 1581
Строитель
Отправлено: 11 Августа, 2017 - 14:36:25 • Тема: Странности со ссылками на переменные • Форум: Вопросы новичков
Ответов: 3 Просмотров: 341
А какой смысл в создании ссылки на ячейку массива? Если не ошибаюсь, ссылку создают на весь массив: И тогда результат обеих массивов вполне предсказуемый PHP:
скопировать код в буфер обмена
$my [ 1 ] = 'new' ;
echo '<pre>' ; var_dump ( $a , $my ) ; echo '</pre>' ; /*
array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
}
array(3) {
[0]=>
int(0)
[1]=>
string(3) "new"
[2]=>
int(2)
}
*/
Строитель
Отправлено: 05 Августа, 2017 - 21:16:39 • Тема: Преобразование массива • Форум: Вопросы новичков
Ответов: 11 Просмотров: 511
Sail , я своё удалил, т.к. структура массива не правильная получилась.
(Добавление)
Sail , на основе вашего алгоритма переписал свой пример Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
$array = [
'users[foo][bar]' => 'message 1' ,
'users[foo][1][bar]' => 'message 2' ,
'users[some][2]' => 'message 3' ,
'name[foo]' => 'message 4'
] ;
$arr = [ ] ;
$patt = '~(\w+)(?:\[(\w+)\])(?:\[(\w+)\])?(?:\[(\w+)\])?~' ;
foreach ( $array as $key => $val ) {
$tmp = & $arr ;
foreach ( $a as $k => $v ) {
if ( $k == 0
|| empty ( $v [ 0
] ) ) continue ; $tmp = & $tmp [ $v [ 0] ] ;
}
$tmp = $val ;
}
echo '<pre>' ; print_r ( $arr ) ; echo '</pre>' ;
Строитель
Отправлено: 05 Августа, 2017 - 01:17:55 • Тема: Защита авторизации. • Форум: Вопросы новичков
Ответов: 8 Просмотров: 552
leshiy , для примера я дописал пару переменных с паролями из html-формы и из базы, и прокомментировал основные моменты Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
// Пароль из формы
$passUser = '123qwe' ;
// Пароль из базы
$passInDB = 'qwe123' ;
// Время ожидания в секундах
$tm = 30 ;
// Если пароли не совпали, активируем счётчик
if ( $passUser != $passInDB ) {
// Если это первая попытка авторизоваться, то установим
// счётчик значением 1, иначе - увеличим значение счётчика
empty ( $_SESSION [ 'vzlom' ] ) ?
$_SESSION [ 'vzlom' ] = 1
: ++ $_SESSION [ 'vzlom' ] ; }
// Если это третья не удачная попытка ввода пароля
if ( isset ( $_SESSION [ 'vzlom' ] ) && $_SESSION [ 'vzlom' ] > 2
) { // Сохраняем временную метку в сессию
! empty ( $_SESSION [ 'v_time' ] ) ?
: $_SESSION [ 'v_time' ] = $time ;
$vrem = ( $tm - ( $time - $_SESSION [ 'v_time' ] ) ) ;
$m = floor ( ( $vrem % 3600
) / 60
) ; $s = ( $vrem % 3600) % 60 ;
$ot_time = ( ( $m > 0 ? $m . ' мин. ' : '' ) . $s . ' сек.' ) ;
// Если время истекло, сбросим счётчики
if ( ( $time - $_SESSION [ 'v_time' ] ) > $tm ) {
unset ( $_SESSION [ 'vzlom' ] , $_SESSION [ 'v_time' ] ) ; }
echo $ot_time ;
}
Строитель
Отправлено: 02 Августа, 2017 - 21:32:19 • Тема: Вопрос по циклу • Форум: Вопросы новичков
Ответов: 15 Просмотров: 957
Nizz , я так понимаю, что вам необходимо собрать массив для передачи его в пользовательскую функцию? Если да, то ваш код будет иметь следующий вид:Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
$sql = "
SELECT `id`, `name`, `articl`, `price`
FROM $GetPage
WHERE id IN ($idsString )
" ;
$result = $db -> query ( $sql ) ;
$result -> setFetchMode ( PDO:: FETCH_ASSOC ) ;
$i = 0 ;
$buyPri = [ ] ;
while ( $row = $result -> fetch ( ) ) {
$products [ $i ] [ 'id' ] = $row [ 'id' ] ;
$products [ $i ] [ 'name' ] = $row [ 'name' ] ;
$products [ $i ] [ 'price' ] = $row [ 'price' ] ;
$products [ $i ] [ 'articl' ] = $row [ 'articl' ] ;
$i ++;
$buyPri [ ] = $row ;
}
echo '<pre>' ; var_dump ( buyPri
( $buyPri ) ) ; echo '</pre>' ; А в функции обрабатывать этот массив (для примера, просто распечатаем массив в браузере) :Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
function buyPri( $arr ) {
$out = '' ;
foreach ( $arr as $row ) {
$out .= $row [ 'id' ] . ' ' . $row [ 'name' ] . ' ' .
$row [ 'price' ] . ' ' . $row [ 'articl' ] . '<br />' ;
}
return $out ;
}
Строитель
Отправлено: 31 Июля, 2017 - 20:38:37 • Тема: Вопрос по циклу • Форум: Вопросы новичков
Ответов: 15 Просмотров: 957
Nizz , я не уверен, но мне кажется, что тут надо смотреть не в сторону массивов, а в сторону sql-запросов с использованием объединения таблиц (JOIN) .
Строитель
Отправлено: 31 Июля, 2017 - 18:03:49 • Тема: Вопрос по циклу • Форум: Вопросы новичков
Ответов: 15 Просмотров: 957
Nizz , у вас функция getproductsByIds() возвращает массив данных, полученный из базы, верно?Nizz пишет: Сначала человек видит товар из таблицы 1, но стоит ему добавить товар из таблицы 2, как и первый товар перезапишется со значениями из таблицы 2.
Можно ли в такой ситуации составить такой цикл?
Т.е., вам нужно выводить пользователю (покупателю) все товары из его корзины, которые ранее были сохранены в базу?
Строитель
Отправлено: 31 Июля, 2017 - 16:56:09 • Тема: Вопрос по циклу • Форум: Вопросы новичков
Ответов: 15 Просмотров: 957
Nizz , вместо объявления глобальной переменной в теле функции, передавайте эту переменную вторым параметром, и в вызове функции явно указывайте название таблицы, из которой вам нужно получить данные. Пример :
Страниц (106): В начало « ... 44 45 46 47 [48] 49 50 51 52 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB