Используя мерзавца с emacs

Вы также можете использовать функцию array_map(), если у вас нет array_column() из-за PHP < 5.5:

Пример:

$a = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    )
);

array_column($a, 'last_name');

Стать:

array_map(function($element) {
  return $element['last_name'];
}, $a);

Итак, в вашем случае код будет:

array_count_values(
  array_map(function($arr) use ($idForBar) {
    return $arr[$idForBar];
  }, $queryResultArray)
);

Это выше работает на PHP 5.3.0 и выше!

Если у вас есть < PHP 5.3.0, как вы написали PHP 5.2.17, просто используйте простую функцию:

function get_field_data($array, $field, $idField = null) {
    

Вы также можете использовать функцию array_map(), если у вас нет array_column() из-за PHP < 5.5:

Пример:

[110]

Стать:

[111]

Итак, в вашем случае код будет:

[112]

Это выше работает на PHP 5.3.0 и выше!

Если у вас есть < PHP 5.3.0, как вы написали PHP 5.2.17, просто используйте простую функцию:

[113]

И использование:

$output = get_field_data($queryResultArray, $idForBar);
out = array(); if (is_array($array)) { if ($idField == null) { foreach ($array as $value) {

Вы также можете использовать функцию array_map(), если у вас нет array_column() из-за PHP < 5.5:

Пример:

[110]

Стать:

[111]

Итак, в вашем случае код будет:

[112]

Это выше работает на PHP 5.3.0 и выше!

Если у вас есть < PHP 5.3.0, как вы написали PHP 5.2.17, просто используйте простую функцию:

[113]

И использование:

$output = get_field_data($queryResultArray, $idForBar);
out[] = $value[$field]; } } else { foreach ($array as $value) {

Вы также можете использовать функцию array_map(), если у вас нет array_column() из-за PHP < 5.5:

Пример:

[110]

Стать:

[111]

Итак, в вашем случае код будет:

[112]

Это выше работает на PHP 5.3.0 и выше!

Если у вас есть < PHP 5.3.0, как вы написали PHP 5.2.17, просто используйте простую функцию:

[113]

И использование:

$output = get_field_data($queryResultArray, $idForBar);
out[$value[$idField]] = $value[$field]; } } return

Вы также можете использовать функцию array_map(), если у вас нет array_column() из-за PHP < 5.5:

Пример:

[110]

Стать:

[111]

Итак, в вашем случае код будет:

[112]

Это выше работает на PHP 5.3.0 и выше!

Если у вас есть < PHP 5.3.0, как вы написали PHP 5.2.17, просто используйте простую функцию:

[113]

И использование:

$output = get_field_data($queryResultArray, $idForBar);
out; } else { return false; } }

И использование:

$output = get_field_data($queryResultArray, $idForBar);
9
задан Török Gábor 30 May 2009 в 19:52
поделиться

2 ответа

In my .emacs for Mac OS X i have following code:

(when (equal system-type 'darwin)
  (setenv "PATH" (concat "/opt/local/bin:/usr/local/bin:" (getenv "PATH")))
  (push "/opt/local/bin" exec-path))

It seems, that the problem is, that when you run terminal.app it use your shell initialization file to setup all environment variables, but when you launch Emacs from Dock, then these variables aren't set.

P.S. By the way - there are other packages to work with Git from Emacs - magit, DVC, egg... You can read about them in my article

20
ответ дан 4 December 2019 в 08:34
поделиться

Ну, поскольку начало строки с ошибкой - env: , это предполагает, что git.el использует программу "env", чтобы найти git и вызвать его. Взгляд на источник подтверждает это, поскольку все вызовы git, похоже, проходят здесь:

(defun git-call-process-env (buffer env &rest args)
  "Wrapper for call-process that sets environment strings."
  (if env
      (apply #'call-process "env" nil buffer nil
             (append (git-get-env-strings env) (list "git") args))
    (apply #'call-process "git" nil buffer nil args)))

Сканирование кода показало, что в большинстве случаев Emacs вызывает git напрямую с call-process , но иногда он использует команда "env", особенно когда ей нужно передать переменные среды (например, "GIT_INDEX_FILE").

Проблема в том, что Emacs не передает свой exec-path в env при запуске через call-process , поэтому установка exec -path в Emacs не поможет `env 'найти git.

На самом деле есть два решения:

  1. Выясните, как получить env , чтобы узнать, где находится git. Боюсь, я не могу вам помочь в этом, так как я не знаю, как настроить подобные вещи на Mac, но это должна быть довольно простая модификация PATH.

  2. Взломайте git. el для передачи PATH = / path / to / git в env при вызове git. Это менее чисто, но это не так уж и плохо для взлома, и особенно если вы выбрали путь в defcustom , он может быть полезен другим.

Я бы посоветовал начать с 1, хотя. Вы можете изменить переменные среды для Emacs, используя:

(setenv "PATH" (concat "/opt/local/bin:" (getenv "PATH")))

А затем попробуйте git.el. Хотя Emacs не передает переменную exec-path дочерним процессам, он копирует переменную среды PATH из того, с чем он был вызван. Поскольку Emacs также вызывает git напрямую, вам также нужно будет установить exec-path таким же образом, как и вы.

Надеюсь, что это поможет.

5
ответ дан 4 December 2019 в 08:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: