Для получения полного доступа
зарегистрируйтесь.
RSS

Все сниппеты с тэгом «array»



Gravatar image
Insolita
  • Репутация: 7
  • Сниппеты: 3
  • Ревизии: 1

При сохранении груповых данных, зачастую требуется сопоставить, то-что у нас уже хранится в БД и то-что пришло с формы, для этого приходится сверять элименты по уникальному полю, данный снипет, из одной незамысловатой строки, вернет массив с уникальными ключами. Затем можно уже проверять на isset($models_by_id[$id]) или array_diff_key, ну и т.д.

$models_by_id=Model::find()->indexBy('id')->all(); //yii 2 path @mista twista

$models=Model::model()->findAll(); //yii 1
$models_by_id=array_combine(array_keys(CHtml::listData($models, 'id', 'id')),$models);
$models_by_id=array_combine(array_column($model,'id'),$model); //since php5.5

Gravatar image
Mikhail_M
  • Репутация: 1
  • Сниппеты: 0
  • Ревизии: 1

Сортировка массива по определенному ключу. Поддерживает ассоциацию индексов. Пример от наших зарубежных коллег: http://php.net/manual/ru/function.sort.php#99419

function array_sort($array, $on, $sortAsc = true)
{
    $new_array = [];
    $sortable_array = [];

    if (count($array) > 0) {
        foreach ($array as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $k2 => $v2) {
                    if ($k2 == $on) {
                        $sortable_array[$k] = $v2;
                    }
                }
            } else {
                $sortable_array[$k] = $v;
            }
        }
        
        (true == $sortAsc) ? asort($sortable_array) : arsort($sortable_array);

        foreach ($sortable_array as $k => $v) {
            $new_array[$k] = $array[$k];
        }
    }

    return $new_array;
}
samdark
  • Репутация: 349
  • Сниппеты: 57
  • Ревизии: 5
function isAssociativeArray($array)
{
    if (!is_array($array) || empty($array)) {
        return false;
    }
    
    return array_keys($array) !== range(0, count($array) - 1);
}
FullZero
  • Репутация: 7
  • Сниппеты: 6
  • Ревизии: 0
(function($) {
    $.rand = (arg)=>{
        return ($.isArray(arg))?arg[$.rand(arg.length)]:(typeof arg == "number")?Math.floor(Math.random() * arg):11;
    };
})(jQuery);
var items = [523,3452,334,31,57,5346];
console.log($.rand(10));
console.log($.rand(items));
console.log($.rand());
FullZero
  • Репутация: 7
  • Сниппеты: 6
  • Ревизии: 0

Иногда при выгрузке товаров в json к товару может быть массив картинок,одна картинка или вообще небыть изображения используя функцию можно либо вернуть спец.картинку вместо отсутствующего изображения либо первую из массива

let obj,
arr= ['image1.jpg','image2.jpg'],
str ="image.jpg";

function is_array(a){
	return (typeof a ==='undefined')? 'noimage.jpg':((typeof a == "object") && (a instanceof Array)) ? a[0] : a;
}
console.log(is_array(obj))
console.log(is_array(arr));
console.log(is_array(str));
FullZero
  • Репутация: 7
  • Сниппеты: 6
  • Ревизии: 0
var data =[
{name:'Яблоко',cost:21},
{name:'Яблоко',cost:21},
{name:'Яблоко',cost:20},
{name:'Груша',cost:30},
{name:'Слива',cost:20}
];
function uniq(arr) {
    const index = [];
    return arr.filter((elem) => {
        const str = JSON.stringify(elem);
        return index.includes(str) ? false : index.push(str);
    });
}
//по полю
function onlyUniq(myArr, key) {
    return myArr.filter((obj, pos, arr) => {
        return arr.map(el => el[key]).indexOf(obj[key]) === pos;
    });
}
console.log(uniq(data));
console.log(onlyUniq(data, 'name'));
Gravatar image
maxyc
  • Репутация: 29
  • Сниппеты: 4
  • Ревизии: 0
 $arr = [1,2,3]
srand(date('W'));
shuffle($array);
srand();

И никаких тебе сохранений промежуточных состояний

samdark
  • Репутация: 349
  • Сниппеты: 57
  • Ревизии: 5

Проверить, что в двух массивах одни и те же элементы, не учитывая сортировку, требудется довольно часто. А вот как это сделать в PHPUnit не совсем очевидно.

$array = ['b', 'a'];
$this->assertEquals(['a', 'b'], $array, '', 0.0, 10, true);
Stephen Berezuev
  • Репутация: 5
  • Сниппеты: 3
  • Ревизии: 1

Перемешивать значения массива раз в неделю можно ничего не сохраняя где либо. Решние найдено на StackOverflow.

Оно основано на инициализации генератора случайных чисел, который используется shuffle(), значением, меняющимся раз в неделю. Функция date('W') даёт нам номер недели в году, что идеально подходит для нашей задачи. После перемешивания массива генератор случайных чисел приводится в нормальное состояние вызовом srand() без аргументов.

srand(date('WY'));
shuffle($array);
srand();
MaximAL
  • Репутация: 4
  • Сниппеты: 0
  • Ревизии: 1

Перемешивать значения массива раз в неделю можно ничего не сохраняя где либо. Решние найдено на StackOverflow.

Оно основано на инициализации генератора случайных чисел, который используется shuffle(), значением, меняющимся раз в неделю. Функция date('W') даёт нам номер недели в году, что идеально подходит для нашей задачи. После перемешивания массива генератор случайных чисел приводится в нормальное состояние вызовом srand() без аргументов.

srand(date('YW'));
shuffle($array);
srand();